var WebControl = function () {
  "use strict";

  function e(t) {
    return (e = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
      return typeof e
    } : function (e) {
      return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
    })(t)
  }

  function t(e, t) {
    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
  }

  function n(e, t) {
    for (var n = 0; n < t.length; n++) {
      var o = t[n];
      o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
    }
  }

  function o(e, t, o) {
    return t && n(e.prototype, t), o && n(e, o), e
  }

  function i(e, t) {
    (null == t || t > e.length) && (t = e.length);
    for (var n = 0, o = new Array(t); n < t; n++) o[n] = e[n];
    return o
  }
  var r = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};

  function a(e, t, n) {
    return e(n = {
      path: t,
      exports: {},
      require: function (e, t) {
        return function () {
          throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")
        }(null == t && n.path)
      }
    }, n.exports), n.exports
  }
  var s = function (e) {
      return e && e.Math == Math && e
    },
    u = s("object" == ("undefined" == typeof globalThis ? "undefined" : e(globalThis)) && globalThis) || s("object" == ("undefined" == typeof window ? "undefined" : e(window)) && window) || s("object" == ("undefined" == typeof self ? "undefined" : e(self)) && self) || s("object" == e(r) && r) || Function("return this")(),
    c = function (e) {
      try {
        return !!e()
      } catch (e) {
        return !0
      }
    },
    l = !c((function () {
      return 7 != Object.defineProperty({}, 1, {
        get: function () {
          return 7
        }
      })[1]
    })),
    d = {}.propertyIsEnumerable,
    f = Object.getOwnPropertyDescriptor,
    h = {
      f: f && !d.call({
        1: 2
      }, 1) ? function (e) {
        var t = f(this, e);
        return !!t && t.enumerable
      } : d
    },
    p = function (e, t) {
      return {
        enumerable: !(1 & e),
        configurable: !(2 & e),
        writable: !(4 & e),
        value: t
      }
    },
    v = {}.toString,
    b = function (e) {
      return v.call(e).slice(8, -1)
    },
    m = "".split,
    g = c((function () {
      return !Object("z").propertyIsEnumerable(0)
    })) ? function (e) {
      return "String" == b(e) ? m.call(e, "") : Object(e)
    } : Object,
    y = function (e) {
      if (null == e) throw TypeError("Can't call method on " + e);
      return e
    },
    _ = function (e) {
      return g(y(e))
    },
    w = function (t) {
      return "object" === e(t) ? null !== t : "function" == typeof t
    },
    k = function (e, t) {
      if (!w(e)) return e;
      var n, o;
      if (t && "function" == typeof (n = e.toString) && !w(o = n.call(e))) return o;
      if ("function" == typeof (n = e.valueOf) && !w(o = n.call(e))) return o;
      if (!t && "function" == typeof (n = e.toString) && !w(o = n.call(e))) return o;
      throw TypeError("Can't convert object to primitive value")
    },
    C = {}.hasOwnProperty,
    S = function (e, t) {
      return C.call(e, t)
    },
    R = u.document,
    q = w(R) && w(R.createElement),
    I = function (e) {
      return q ? R.createElement(e) : {}
    },
    P = !l && !c((function () {
      return 7 != Object.defineProperty(I("div"), "a", {
        get: function () {
          return 7
        }
      }).a
    })),
    x = Object.getOwnPropertyDescriptor,
    z = {
      f: l ? x : function (e, t) {
        if (e = _(e), t = k(t, !0), P) try {
          return x(e, t)
        } catch (e) {}
        if (S(e, t)) return p(!h.f.call(e, t), e[t])
      }
    },
    E = function (e) {
      if (!w(e)) throw TypeError(String(e) + " is not an object");
      return e
    },
    O = Object.defineProperty,
    T = {
      f: l ? O : function (e, t, n) {
        if (E(e), t = k(t, !0), E(n), P) try {
          return O(e, t, n)
        } catch (e) {}
        if ("get" in n || "set" in n) throw TypeError("Accessors not supported");
        return "value" in n && (e[t] = n.value), e
      }
    },
    W = l ? function (e, t, n) {
      return T.f(e, t, p(1, n))
    } : function (e, t, n) {
      return e[t] = n, e
    },
    D = function (e, t) {
      try {
        W(u, e, t)
      } catch (n) {
        u[e] = t
      }
      return t
    },
    A = "__core-js_shared__",
    U = u[A] || D(A, {}),
    M = Function.toString;
  "function" != typeof U.inspectSource && (U.inspectSource = function (e) {
    return M.call(e)
  });
  var F, B, L, J = U.inspectSource,
    j = u.WeakMap,
    N = "function" == typeof j && /native code/.test(J(j)),
    Z = a((function (e) {
      (e.exports = function (e, t) {
        return U[e] || (U[e] = void 0 !== t ? t : {})
      })("versions", []).push({
        version: "3.6.5",
        mode: "global",
        copyright: "© 2020 Denis Pushkarev (zloirock.ru)"
      })
    })),
    H = 0,
    G = Math.random(),
    V = function (e) {
      return "Symbol(" + String(void 0 === e ? "" : e) + ")_" + (++H + G).toString(36)
    },
    K = Z("keys"),
    X = function (e) {
      return K[e] || (K[e] = V(e))
    },
    Y = {},
    $ = u.WeakMap;
  if (N) {
    var Q = new $,
      ee = Q.get,
      te = Q.has,
      ne = Q.set;
    F = function (e, t) {
      return ne.call(Q, e, t), t
    }, B = function (e) {
      return ee.call(Q, e) || {}
    }, L = function (e) {
      return te.call(Q, e)
    }
  } else {
    var oe = X("state");
    Y[oe] = !0, F = function (e, t) {
      return W(e, oe, t), t
    }, B = function (e) {
      return S(e, oe) ? e[oe] : {}
    }, L = function (e) {
      return S(e, oe)
    }
  }
  var ie = {
      set: F,
      get: B,
      has: L,
      enforce: function (e) {
        return L(e) ? B(e) : F(e, {})
      },
      getterFor: function (e) {
        return function (t) {
          var n;
          if (!w(t) || (n = B(t)).type !== e) throw TypeError("Incompatible receiver, " + e + " required");
          return n
        }
      }
    },
    re = a((function (e) {
      var t = ie.get,
        n = ie.enforce,
        o = String(String).split("String");
      (e.exports = function (e, t, i, r) {
        var a = !!r && !!r.unsafe,
          s = !!r && !!r.enumerable,
          c = !!r && !!r.noTargetGet;
        "function" == typeof i && ("string" != typeof t || S(i, "name") || W(i, "name", t), n(i).source = o.join("string" == typeof t ? t : "")), e !== u ? (a ? !c && e[t] && (s = !0) : delete e[t], s ? e[t] = i : W(e, t, i)) : s ? e[t] = i : D(t, i)
      })(Function.prototype, "toString", (function () {
        return "function" == typeof this && t(this).source || J(this)
      }))
    })),
    ae = u,
    se = function (e) {
      return "function" == typeof e ? e : void 0
    },
    ue = function (e, t) {
      return arguments.length < 2 ? se(ae[e]) || se(u[e]) : ae[e] && ae[e][t] || u[e] && u[e][t]
    },
    ce = Math.ceil,
    le = Math.floor,
    de = function (e) {
      return isNaN(e = +e) ? 0 : (e > 0 ? le : ce)(e)
    },
    fe = Math.min,
    he = function (e) {
      return e > 0 ? fe(de(e), 9007199254740991) : 0
    },
    pe = Math.max,
    ve = Math.min,
    be = function (e) {
      return function (t, n, o) {
        var i, r = _(t),
          a = he(r.length),
          s = function (e, t) {
            var n = de(e);
            return n < 0 ? pe(n + t, 0) : ve(n, t)
          }(o, a);
        if (e && n != n) {
          for (; a > s;)
            if ((i = r[s++]) != i) return !0
        } else
          for (; a > s; s++)
            if ((e || s in r) && r[s] === n) return e || s || 0;
        return !e && -1
      }
    },
    me = {
      includes: be(!0),
      indexOf: be(!1)
    }.indexOf,
    ge = function (e, t) {
      var n, o = _(e),
        i = 0,
        r = [];
      for (n in o) !S(Y, n) && S(o, n) && r.push(n);
      for (; t.length > i;) S(o, n = t[i++]) && (~me(r, n) || r.push(n));
      return r
    },
    ye = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"],
    _e = ye.concat("length", "prototype"),
    we = {
      f: Object.getOwnPropertyNames || function (e) {
        return ge(e, _e)
      }
    },
    ke = {
      f: Object.getOwnPropertySymbols
    },
    Ce = ue("Reflect", "ownKeys") || function (e) {
      var t = we.f(E(e)),
        n = ke.f;
      return n ? t.concat(n(e)) : t
    },
    Se = function (e, t) {
      for (var n = Ce(t), o = T.f, i = z.f, r = 0; r < n.length; r++) {
        var a = n[r];
        S(e, a) || o(e, a, i(t, a))
      }
    },
    Re = /#|\.prototype\./,
    qe = function (e, t) {
      var n = Pe[Ie(e)];
      return n == ze || n != xe && ("function" == typeof t ? c(t) : !!t)
    },
    Ie = qe.normalize = function (e) {
      return String(e).replace(Re, ".").toLowerCase()
    },
    Pe = qe.data = {},
    xe = qe.NATIVE = "N",
    ze = qe.POLYFILL = "P",
    Ee = qe,
    Oe = z.f,
    Te = function (t, n) {
      var o, i, r, a, s, c = t.target,
        l = t.global,
        d = t.stat;
      if (o = l ? u : d ? u[c] || D(c, {}) : (u[c] || {}).prototype)
        for (i in n) {
          if (a = n[i], r = t.noTargetGet ? (s = Oe(o, i)) && s.value : o[i], !Ee(l ? i : c + (d ? "." : "#") + i, t.forced) && void 0 !== r) {
            if (e(a) === e(r)) continue;
            Se(a, r)
          }(t.sham || r && r.sham) && W(a, "sham", !0), re(o, i, a, t)
        }
    },
    We = Object.keys || function (e) {
      return ge(e, ye)
    },
    De = function (e) {
      return Object(y(e))
    },
    Ae = Object.assign,
    Ue = Object.defineProperty,
    Me = !Ae || c((function () {
      if (l && 1 !== Ae({
          b: 1
        }, Ae(Ue({}, "a", {
          enumerable: !0,
          get: function () {
            Ue(this, "b", {
              value: 3,
              enumerable: !1
            })
          }
        }), {
          b: 2
        })).b) return !0;
      var e = {},
        t = {},
        n = Symbol(),
        o = "abcdefghijklmnopqrst";
      return e[n] = 7, o.split("").forEach((function (e) {
        t[e] = e
      })), 7 != Ae({}, e)[n] || We(Ae({}, t)).join("") != o
    })) ? function (e, t) {
      for (var n = De(e), o = arguments.length, i = 1, r = ke.f, a = h.f; o > i;)
        for (var s, u = g(arguments[i++]), c = r ? We(u).concat(r(u)) : We(u), d = c.length, f = 0; d > f;) s = c[f++], l && !a.call(u, s) || (n[s] = u[s]);
      return n
    } : Ae;
  Te({
    target: "Object",
    stat: !0,
    forced: Object.assign !== Me
  }, {
    assign: Me
  });
  ae.Object.assign;
  var Fe = !!Object.getOwnPropertySymbols && !c((function () {
      return !String(Symbol())
    })),
    Be = Fe && !Symbol.sham && "symbol" == e(Symbol.iterator),
    Le = Z("wks"),
    Je = u.Symbol,
    je = Be ? Je : Je && Je.withoutSetter || V,
    Ne = function (e) {
      return S(Le, e) || (Fe && S(Je, e) ? Le[e] = Je[e] : Le[e] = je("Symbol." + e)), Le[e]
    },
    Ze = {};
  Ze[Ne("toStringTag")] = "z";
  var He = "[object z]" === String(Ze),
    Ge = Ne("toStringTag"),
    Ve = "Arguments" == b(function () {
      return arguments
    }()),
    Ke = He ? b : function (e) {
      var t, n, o;
      return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = function (e, t) {
        try {
          return e[t]
        } catch (e) {}
      }(t = Object(e), Ge)) ? n : Ve ? b(t) : "Object" == (o = b(t)) && "function" == typeof t.callee ? "Arguments" : o
    },
    Xe = He ? {}.toString : function () {
      return "[object " + Ke(this) + "]"
    };
  He || re(Object.prototype, "toString", Xe, {
    unsafe: !0
  });
  var Ye, $e, Qe, et = function (e) {
      return function (t, n) {
        var o, i, r = String(y(t)),
          a = de(n),
          s = r.length;
        return a < 0 || a >= s ? e ? "" : void 0 : (o = r.charCodeAt(a)) < 55296 || o > 56319 || a + 1 === s || (i = r.charCodeAt(a + 1)) < 56320 || i > 57343 ? e ? r.charAt(a) : o : e ? r.slice(a, a + 2) : i - 56320 + (o - 55296 << 10) + 65536
      }
    },
    tt = {
      codeAt: et(!1),
      charAt: et(!0)
    },
    nt = !c((function () {
      function e() {}
      return e.prototype.constructor = null, Object.getPrototypeOf(new e) !== e.prototype
    })),
    ot = X("IE_PROTO"),
    it = Object.prototype,
    rt = nt ? Object.getPrototypeOf : function (e) {
      return e = De(e), S(e, ot) ? e[ot] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? it : null
    },
    at = Ne("iterator"),
    st = !1;
  [].keys && ("next" in (Qe = [].keys()) ? ($e = rt(rt(Qe))) !== Object.prototype && (Ye = $e) : st = !0), null == Ye && (Ye = {}), S(Ye, at) || W(Ye, at, (function () {
    return this
  }));
  var ut, ct = {
      IteratorPrototype: Ye,
      BUGGY_SAFARI_ITERATORS: st
    },
    lt = l ? Object.defineProperties : function (e, t) {
      E(e);
      for (var n, o = We(t), i = o.length, r = 0; i > r;) T.f(e, n = o[r++], t[n]);
      return e
    },
    dt = ue("document", "documentElement"),
    ft = X("IE_PROTO"),
    ht = function () {},
    pt = function (e) {
      return "<script>" + e + "</" + "script>"
    },
    vt = function () {
      try {
        ut = document.domain && new ActiveXObject("htmlfile")
      } catch (e) {}
      var e, t;
      vt = ut ? function (e) {
        e.write(pt("")), e.close();
        var t = e.parentWindow.Object;
        return e = null, t
      }(ut) : ((t = I("iframe")).style.display = "none", dt.appendChild(t), t.src = String("javascript:"), (e = t.contentWindow.document).open(), e.write(pt("document.F=Object")), e.close(), e.F);
      for (var n = ye.length; n--;) delete vt.prototype[ye[n]];
      return vt()
    };
  Y[ft] = !0;
  var bt = Object.create || function (e, t) {
      var n;
      return null !== e ? (ht.prototype = E(e), n = new ht, ht.prototype = null, n[ft] = e) : n = vt(), void 0 === t ? n : lt(n, t)
    },
    mt = T.f,
    gt = Ne("toStringTag"),
    yt = function (e, t, n) {
      e && !S(e = n ? e : e.prototype, gt) && mt(e, gt, {
        configurable: !0,
        value: t
      })
    },
    _t = {},
    wt = ct.IteratorPrototype,
    kt = function () {
      return this
    },
    Ct = Object.setPrototypeOf || ("__proto__" in {} ? function () {
      var e, t = !1,
        n = {};
      try {
        (e = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(n, []), t = n instanceof Array
      } catch (e) {}
      return function (n, o) {
        return E(n),
          function (e) {
            if (!w(e) && null !== e) throw TypeError("Can't set " + String(e) + " as a prototype")
          }(o), t ? e.call(n, o) : n.__proto__ = o, n
      }
    }() : void 0),
    St = ct.IteratorPrototype,
    Rt = ct.BUGGY_SAFARI_ITERATORS,
    qt = Ne("iterator"),
    It = "keys",
    Pt = "values",
    xt = "entries",
    zt = function () {
      return this
    },
    Et = function (e, t, n, o, i, r, a) {
      ! function (e, t, n) {
        var o = t + " Iterator";
        e.prototype = bt(wt, {
          next: p(1, n)
        }), yt(e, o, !1), _t[o] = kt
      }(n, t, o);
      var s, u, c, l = function (e) {
          if (e === i && b) return b;
          if (!Rt && e in h) return h[e];
          switch (e) {
            case It:
            case Pt:
            case xt:
              return function () {
                return new n(this, e)
              }
          }
          return function () {
            return new n(this)
          }
        },
        d = t + " Iterator",
        f = !1,
        h = e.prototype,
        v = h[qt] || h["@@iterator"] || i && h[i],
        b = !Rt && v || l(i),
        m = "Array" == t && h.entries || v;
      if (m && (s = rt(m.call(new e)), St !== Object.prototype && s.next && (rt(s) !== St && (Ct ? Ct(s, St) : "function" != typeof s[qt] && W(s, qt, zt)), yt(s, d, !0))), i == Pt && v && v.name !== Pt && (f = !0, b = function () {
          return v.call(this)
        }), h[qt] !== b && W(h, qt, b), _t[t] = b, i)
        if (u = {
            values: l(Pt),
            keys: r ? b : l(It),
            entries: l(xt)
          }, a)
          for (c in u)(Rt || f || !(c in h)) && re(h, c, u[c]);
        else Te({
          target: t,
          proto: !0,
          forced: Rt || f
        }, u);
      return u
    },
    Ot = tt.charAt,
    Tt = "String Iterator",
    Wt = ie.set,
    Dt = ie.getterFor(Tt);
  Et(String, "String", (function (e) {
    Wt(this, {
      type: Tt,
      string: String(e),
      index: 0
    })
  }), (function () {
    var e, t = Dt(this),
      n = t.string,
      o = t.index;
    return o >= n.length ? {
      value: void 0,
      done: !0
    } : (e = Ot(n, o), t.index += e.length, {
      value: e,
      done: !1
    })
  }));
  var At = {
      CSSRuleList: 0,
      CSSStyleDeclaration: 0,
      CSSValueList: 0,
      ClientRectList: 0,
      DOMRectList: 0,
      DOMStringList: 0,
      DOMTokenList: 1,
      DataTransferItemList: 0,
      FileList: 0,
      HTMLAllCollection: 0,
      HTMLCollection: 0,
      HTMLFormElement: 0,
      HTMLSelectElement: 0,
      MediaList: 0,
      MimeTypeArray: 0,
      NamedNodeMap: 0,
      NodeList: 1,
      PaintRequestList: 0,
      Plugin: 0,
      PluginArray: 0,
      SVGLengthList: 0,
      SVGNumberList: 0,
      SVGPathSegList: 0,
      SVGPointList: 0,
      SVGStringList: 0,
      SVGTransformList: 0,
      SourceBufferList: 0,
      StyleSheetList: 0,
      TextTrackCueList: 0,
      TextTrackList: 0,
      TouchList: 0
    },
    Ut = Ne("unscopables"),
    Mt = Array.prototype;
  null == Mt[Ut] && T.f(Mt, Ut, {
    configurable: !0,
    value: bt(null)
  });
  var Ft = function (e) {
      Mt[Ut][e] = !0
    },
    Bt = "Array Iterator",
    Lt = ie.set,
    Jt = ie.getterFor(Bt),
    jt = Et(Array, "Array", (function (e, t) {
      Lt(this, {
        type: Bt,
        target: _(e),
        index: 0,
        kind: t
      })
    }), (function () {
      var e = Jt(this),
        t = e.target,
        n = e.kind,
        o = e.index++;
      return !t || o >= t.length ? (e.target = void 0, {
        value: void 0,
        done: !0
      }) : "keys" == n ? {
        value: o,
        done: !1
      } : "values" == n ? {
        value: t[o],
        done: !1
      } : {
        value: [o, t[o]],
        done: !1
      }
    }), "values");
  _t.Arguments = _t.Array, Ft("keys"), Ft("values"), Ft("entries");
  var Nt = Ne("iterator"),
    Zt = Ne("toStringTag"),
    Ht = jt.values;
  for (var Gt in At) {
    var Vt = u[Gt],
      Kt = Vt && Vt.prototype;
    if (Kt) {
      if (Kt[Nt] !== Ht) try {
        W(Kt, Nt, Ht)
      } catch (e) {
        Kt[Nt] = Ht
      }
      if (Kt[Zt] || W(Kt, Zt, Gt), At[Gt])
        for (var Xt in jt)
          if (Kt[Xt] !== jt[Xt]) try {
            W(Kt, Xt, jt[Xt])
          } catch (e) {
            Kt[Xt] = jt[Xt]
          }
    }
  }
  var Yt = u.Promise,
    $t = Ne("species"),
    Qt = function (e) {
      if ("function" != typeof e) throw TypeError(String(e) + " is not a function");
      return e
    },
    en = Ne("iterator"),
    tn = Array.prototype,
    nn = function (e, t, n) {
      if (Qt(e), void 0 === t) return e;
      switch (n) {
        case 0:
          return function () {
            return e.call(t)
          };
        case 1:
          return function (n) {
            return e.call(t, n)
          };
        case 2:
          return function (n, o) {
            return e.call(t, n, o)
          };
        case 3:
          return function (n, o, i) {
            return e.call(t, n, o, i)
          }
      }
      return function () {
        return e.apply(t, arguments)
      }
    },
    on = Ne("iterator"),
    rn = function (e, t, n, o) {
      try {
        return o ? t(E(n)[0], n[1]) : t(n)
      } catch (t) {
        var i = e.return;
        throw void 0 !== i && E(i.call(e)), t
      }
    },
    an = a((function (t) {
      var n = function (e, t) {
        this.stopped = e, this.result = t
      };
      (t.exports = function (t, o, i, r, a) {
        var s, u, c, l, d, f, h, p, v = nn(o, i, r ? 2 : 1);
        if (a) s = t;
        else {
          if ("function" != typeof (u = function (e) {
              if (null != e) return e[on] || e["@@iterator"] || _t[Ke(e)]
            }(t))) throw TypeError("Target is not iterable");
          if (void 0 !== (p = u) && (_t.Array === p || tn[en] === p)) {
            for (c = 0, l = he(t.length); l > c; c++)
              if ((d = r ? v(E(h = t[c])[0], h[1]) : v(t[c])) && d instanceof n) return d;
            return new n(!1)
          }
          s = u.call(t)
        }
        for (f = s.next; !(h = f.call(s)).done;)
          if ("object" == e(d = rn(s, v, h.value, r)) && d && d instanceof n) return d;
        return new n(!1)
      }).stop = function (e) {
        return new n(!0, e)
      }
    })),
    sn = Ne("iterator"),
    un = !1;
  try {
    var cn = 0,
      ln = {
        next: function () {
          return {
            done: !!cn++
          }
        },
        return: function () {
          un = !0
        }
      };
    ln[sn] = function () {
      return this
    }, Array.from(ln, (function () {
      throw 2
    }))
  } catch (e) {}
  var dn, fn, hn, pn = Ne("species"),
    vn = function (e, t) {
      var n, o = E(e).constructor;
      return void 0 === o || null == (n = E(o)[pn]) ? t : Qt(n)
    },
    bn = ue("navigator", "userAgent") || "",
    mn = /(iphone|ipod|ipad).*applewebkit/i.test(bn),
    gn = u.location,
    yn = u.setImmediate,
    _n = u.clearImmediate,
    wn = u.process,
    kn = u.MessageChannel,
    Cn = u.Dispatch,
    Sn = 0,
    Rn = {},
    qn = "onreadystatechange",
    In = function (e) {
      if (Rn.hasOwnProperty(e)) {
        var t = Rn[e];
        delete Rn[e], t()
      }
    },
    Pn = function (e) {
      return function () {
        In(e)
      }
    },
    xn = function (e) {
      In(e.data)
    },
    zn = function (e) {
      u.postMessage(e + "", gn.protocol + "//" + gn.host)
    };
  yn && _n || (yn = function (e) {
    for (var t = [], n = 1; arguments.length > n;) t.push(arguments[n++]);
    return Rn[++Sn] = function () {
      ("function" == typeof e ? e : Function(e)).apply(void 0, t)
    }, dn(Sn), Sn
  }, _n = function (e) {
    delete Rn[e]
  }, "process" == b(wn) ? dn = function (e) {
    wn.nextTick(Pn(e))
  } : Cn && Cn.now ? dn = function (e) {
    Cn.now(Pn(e))
  } : kn && !mn ? (hn = (fn = new kn).port2, fn.port1.onmessage = xn, dn = nn(hn.postMessage, hn, 1)) : !u.addEventListener || "function" != typeof postMessage || u.importScripts || c(zn) || "file:" === gn.protocol ? dn = qn in I("script") ? function (e) {
    dt.appendChild(I("script")).onreadystatechange = function () {
      dt.removeChild(this), In(e)
    }
  } : function (e) {
    setTimeout(Pn(e), 0)
  } : (dn = zn, u.addEventListener("message", xn, !1)));
  var En, On, Tn, Wn, Dn, An, Un, Mn, Fn = {
      set: yn,
      clear: _n
    },
    Bn = z.f,
    Ln = Fn.set,
    Jn = u.MutationObserver || u.WebKitMutationObserver,
    jn = u.process,
    Nn = u.Promise,
    Zn = "process" == b(jn),
    Hn = Bn(u, "queueMicrotask"),
    Gn = Hn && Hn.value;
  Gn || (En = function () {
    var e, t;
    for (Zn && (e = jn.domain) && e.exit(); On;) {
      t = On.fn, On = On.next;
      try {
        t()
      } catch (e) {
        throw On ? Wn() : Tn = void 0, e
      }
    }
    Tn = void 0, e && e.enter()
  }, Zn ? Wn = function () {
    jn.nextTick(En)
  } : Jn && !mn ? (Dn = !0, An = document.createTextNode(""), new Jn(En).observe(An, {
    characterData: !0
  }), Wn = function () {
    An.data = Dn = !Dn
  }) : Nn && Nn.resolve ? (Un = Nn.resolve(void 0), Mn = Un.then, Wn = function () {
    Mn.call(Un, En)
  }) : Wn = function () {
    Ln.call(u, En)
  });
  var Vn, Kn, Xn = Gn || function (e) {
      var t = {
        fn: e,
        next: void 0
      };
      Tn && (Tn.next = t), On || (On = t, Wn()), Tn = t
    },
    Yn = function (e) {
      var t, n;
      this.promise = new e((function (e, o) {
        if (void 0 !== t || void 0 !== n) throw TypeError("Bad Promise constructor");
        t = e, n = o
      })), this.resolve = Qt(t), this.reject = Qt(n)
    },
    $n = {
      f: function (e) {
        return new Yn(e)
      }
    },
    Qn = function (e, t) {
      if (E(e), w(t) && t.constructor === e) return t;
      var n = $n.f(e);
      return (0, n.resolve)(t), n.promise
    },
    eo = function (e) {
      try {
        return {
          error: !1,
          value: e()
        }
      } catch (e) {
        return {
          error: !0,
          value: e
        }
      }
    },
    to = u.process,
    no = to && to.versions,
    oo = no && no.v8;
  oo ? Kn = (Vn = oo.split("."))[0] + Vn[1] : bn && (!(Vn = bn.match(/Edge\/(\d+)/)) || Vn[1] >= 74) && (Vn = bn.match(/Chrome\/(\d+)/)) && (Kn = Vn[1]);
  var io, ro, ao, so, uo = Kn && +Kn,
    co = Fn.set,
    lo = Ne("species"),
    fo = "Promise",
    ho = ie.get,
    po = ie.set,
    vo = ie.getterFor(fo),
    bo = Yt,
    mo = u.TypeError,
    go = u.document,
    yo = u.process,
    _o = ue("fetch"),
    wo = $n.f,
    ko = wo,
    Co = "process" == b(yo),
    So = !!(go && go.createEvent && u.dispatchEvent),
    Ro = "unhandledrejection",
    qo = Ee(fo, (function () {
      if (!(J(bo) !== String(bo))) {
        if (66 === uo) return !0;
        if (!Co && "function" != typeof PromiseRejectionEvent) return !0
      }
      if (uo >= 51 && /native code/.test(bo)) return !1;
      var e = bo.resolve(1),
        t = function (e) {
          e((function () {}), (function () {}))
        };
      return (e.constructor = {})[lo] = t, !(e.then((function () {})) instanceof t)
    })),
    Io = qo || ! function (e, t) {
      if (!t && !un) return !1;
      var n = !1;
      try {
        var o = {};
        o[sn] = function () {
          return {
            next: function () {
              return {
                done: n = !0
              }
            }
          }
        }, e(o)
      } catch (e) {}
      return n
    }((function (e) {
      bo.all(e).catch((function () {}))
    })),
    Po = function (e) {
      var t;
      return !(!w(e) || "function" != typeof (t = e.then)) && t
    },
    xo = function (e, t, n) {
      if (!t.notified) {
        t.notified = !0;
        var o = t.reactions;
        Xn((function () {
          for (var i = t.value, r = 1 == t.state, a = 0; o.length > a;) {
            var s, u, c, l = o[a++],
              d = r ? l.ok : l.fail,
              f = l.resolve,
              h = l.reject,
              p = l.domain;
            try {
              d ? (r || (2 === t.rejection && To(e, t), t.rejection = 1), !0 === d ? s = i : (p && p.enter(), s = d(i), p && (p.exit(), c = !0)), s === l.promise ? h(mo("Promise-chain cycle")) : (u = Po(s)) ? u.call(s, f, h) : f(s)) : h(i)
            } catch (e) {
              p && !c && p.exit(), h(e)
            }
          }
          t.reactions = [], t.notified = !1, n && !t.rejection && Eo(e, t)
        }))
      }
    },
    zo = function (e, t, n) {
      var o, i;
      So ? ((o = go.createEvent("Event")).promise = t, o.reason = n, o.initEvent(e, !1, !0), u.dispatchEvent(o)) : o = {
        promise: t,
        reason: n
      }, (i = u["on" + e]) ? i(o) : e === Ro && function (e, t) {
        var n = u.console;
        n && n.error && (1 === arguments.length ? n.error(e) : n.error(e, t))
      }("Unhandled promise rejection", n)
    },
    Eo = function (e, t) {
      co.call(u, (function () {
        var n, o = t.value;
        if (Oo(t) && (n = eo((function () {
            Co ? yo.emit("unhandledRejection", o, e) : zo(Ro, e, o)
          })), t.rejection = Co || Oo(t) ? 2 : 1, n.error)) throw n.value
      }))
    },
    Oo = function (e) {
      return 1 !== e.rejection && !e.parent
    },
    To = function (e, t) {
      co.call(u, (function () {
        Co ? yo.emit("rejectionHandled", e) : zo("rejectionhandled", e, t.value)
      }))
    },
    Wo = function (e, t, n, o) {
      return function (i) {
        e(t, n, i, o)
      }
    },
    Do = function (e, t, n, o) {
      t.done || (t.done = !0, o && (t = o), t.value = n, t.state = 2, xo(e, t, !0))
    },
    Ao = function e(t, n, o, i) {
      if (!n.done) {
        n.done = !0, i && (n = i);
        try {
          if (t === o) throw mo("Promise can't be resolved itself");
          var r = Po(o);
          r ? Xn((function () {
            var i = {
              done: !1
            };
            try {
              r.call(o, Wo(e, t, i, n), Wo(Do, t, i, n))
            } catch (e) {
              Do(t, i, e, n)
            }
          })) : (n.value = o, n.state = 1, xo(t, n, !1))
        } catch (e) {
          Do(t, {
            done: !1
          }, e, n)
        }
      }
    };
  qo && (bo = function (e) {
      ! function (e, t, n) {
        if (!(e instanceof t)) throw TypeError("Incorrect " + (n ? n + " " : "") + "invocation")
      }(this, bo, fo), Qt(e), io.call(this);
      var t = ho(this);
      try {
        e(Wo(Ao, this, t), Wo(Do, this, t))
      } catch (e) {
        Do(this, t, e)
      }
    }, (io = function (e) {
      po(this, {
        type: fo,
        done: !1,
        notified: !1,
        parent: !1,
        reactions: [],
        rejection: !1,
        state: 0,
        value: void 0
      })
    }).prototype = function (e, t, n) {
      for (var o in t) re(e, o, t[o], n);
      return e
    }(bo.prototype, {
      then: function (e, t) {
        var n = vo(this),
          o = wo(vn(this, bo));
        return o.ok = "function" != typeof e || e, o.fail = "function" == typeof t && t, o.domain = Co ? yo.domain : void 0, n.parent = !0, n.reactions.push(o), 0 != n.state && xo(this, n, !1), o.promise
      },
      catch: function (e) {
        return this.then(void 0, e)
      }
    }), ro = function () {
      var e = new io,
        t = ho(e);
      this.promise = e, this.resolve = Wo(Ao, e, t), this.reject = Wo(Do, e, t)
    }, $n.f = wo = function (e) {
      return e === bo || e === ao ? new ro(e) : ko(e)
    }, "function" == typeof Yt && (so = Yt.prototype.then, re(Yt.prototype, "then", (function (e, t) {
      var n = this;
      return new bo((function (e, t) {
        so.call(n, e, t)
      })).then(e, t)
    }), {
      unsafe: !0
    }), "function" == typeof _o && Te({
      global: !0,
      enumerable: !0,
      forced: !0
    }, {
      fetch: function (e) {
        return Qn(bo, _o.apply(u, arguments))
      }
    }))), Te({
      global: !0,
      wrap: !0,
      forced: qo
    }, {
      Promise: bo
    }), yt(bo, fo, !1),
    function (e) {
      var t = ue(e),
        n = T.f;
      l && t && !t[$t] && n(t, $t, {
        configurable: !0,
        get: function () {
          return this
        }
      })
    }(fo), ao = ue(fo), Te({
      target: fo,
      stat: !0,
      forced: qo
    }, {
      reject: function (e) {
        var t = wo(this);
        return t.reject.call(void 0, e), t.promise
      }
    }), Te({
      target: fo,
      stat: !0,
      forced: qo
    }, {
      resolve: function (e) {
        return Qn(this, e)
      }
    }), Te({
      target: fo,
      stat: !0,
      forced: Io
    }, {
      all: function (e) {
        var t = this,
          n = wo(t),
          o = n.resolve,
          i = n.reject,
          r = eo((function () {
            var n = Qt(t.resolve),
              r = [],
              a = 0,
              s = 1;
            an(e, (function (e) {
              var u = a++,
                c = !1;
              r.push(void 0), s++, n.call(t, e).then((function (e) {
                c || (c = !0, r[u] = e, --s || o(r))
              }), i)
            })), --s || o(r)
          }));
        return r.error && i(r.value), n.promise
      },
      race: function (e) {
        var t = this,
          n = wo(t),
          o = n.reject,
          i = eo((function () {
            var i = Qt(t.resolve);
            an(e, (function (e) {
              i.call(t, e).then(n.resolve, o)
            }))
          }));
        return i.error && o(i.value), n.promise
      }
    }), Te({
      target: "Promise",
      stat: !0
    }, {
      allSettled: function (e) {
        var t = this,
          n = $n.f(t),
          o = n.resolve,
          i = n.reject,
          r = eo((function () {
            var n = Qt(t.resolve),
              i = [],
              r = 0,
              a = 1;
            an(e, (function (e) {
              var s = r++,
                u = !1;
              i.push(void 0), a++, n.call(t, e).then((function (e) {
                u || (u = !0, i[s] = {
                  status: "fulfilled",
                  value: e
                }, --a || o(i))
              }), (function (e) {
                u || (u = !0, i[s] = {
                  status: "rejected",
                  reason: e
                }, --a || o(i))
              }))
            })), --a || o(i)
          }));
        return r.error && i(r.value), n.promise
      }
    });
  var Uo = !!Yt && c((function () {
    Yt.prototype.finally.call({
      then: function () {}
    }, (function () {}))
  }));
  Te({
    target: "Promise",
    proto: !0,
    real: !0,
    forced: Uo
  }, {
    finally: function (e) {
      var t = vn(this, ue("Promise")),
        n = "function" == typeof e;
      return this.then(n ? function (n) {
        return Qn(t, e()).then((function () {
          return n
        }))
      } : e, n ? function (n) {
        return Qn(t, e()).then((function () {
          throw n
        }))
      } : e)
    }
  }), "function" != typeof Yt || Yt.prototype.finally || re(Yt.prototype, "finally", ue("Promise").prototype.finally);
  ae.Promise;
  var Mo = "undefined" != typeof crypto && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || "undefined" != typeof msCrypto && "function" == typeof msCrypto.getRandomValues && msCrypto.getRandomValues.bind(msCrypto),
    Fo = new Uint8Array(16);

  function Bo() {
    if (!Mo) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
    return Mo(Fo)
  }
  var Lo = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;

  function Jo(e) {
    return "string" == typeof e && Lo.test(e)
  }
  for (var jo = [], No = 0; No < 256; ++No) jo.push((No + 256).toString(16).substr(1));

  function Zo(e, t, n) {
    var o = (e = e || {}).random || (e.rng || Bo)();
    if (o[6] = 15 & o[6] | 64, o[8] = 63 & o[8] | 128, t) {
      n = n || 0;
      for (var i = 0; i < 16; ++i) t[n + i] = o[i];
      return t
    }
    return function (e) {
      var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
        n = (jo[e[t + 0]] + jo[e[t + 1]] + jo[e[t + 2]] + jo[e[t + 3]] + "-" + jo[e[t + 4]] + jo[e[t + 5]] + "-" + jo[e[t + 6]] + jo[e[t + 7]] + "-" + jo[e[t + 8]] + jo[e[t + 9]] + "-" + jo[e[t + 10]] + jo[e[t + 11]] + jo[e[t + 12]] + jo[e[t + 13]] + jo[e[t + 14]] + jo[e[t + 15]]).toLowerCase();
      if (!Jo(n)) throw TypeError("Stringified UUID is invalid");
      return n
    }(o)
  }
  var Ho, Go, Vo = "3.4.5",
    Ko = "function" == typeof atob,
    Xo = "function" == typeof btoa,
    Yo = "function" == typeof Buffer,
    $o = function (e) {
      if (Array.isArray(e)) return i(e)
    }(Ho = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=") || function (e) {
      if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
    }(Ho) || function (e, t) {
      if (e) {
        if ("string" == typeof e) return i(e, t);
        var n = Object.prototype.toString.call(e).slice(8, -1);
        return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? i(e, t) : void 0
      }
    }(Ho) || function () {
      throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
    }(),
    Qo = (Go = {}, $o.forEach((function (e, t) {
      return Go[e] = t
    })), Go),
    ei = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,
    ti = String.fromCharCode.bind(String),
    ni = "function" == typeof Uint8Array.from ? Uint8Array.from.bind(Uint8Array) : function (e) {
      var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : function (e) {
        return e
      };
      return new Uint8Array(Array.prototype.slice.call(e, 0).map(t))
    },
    oi = function (e) {
      return e.replace(/[+\/]/g, (function (e) {
        return "+" == e ? "-" : "_"
      })).replace(/=+$/m, "")
    },
    ii = function (e) {
      return e.replace(/[^A-Za-z0-9\+\/]/g, "")
    },
    ri = function (e) {
      for (var t, n, o, i, r = "", a = e.length % 3, s = 0; s < e.length;) {
        if ((n = e.charCodeAt(s++)) > 255 || (o = e.charCodeAt(s++)) > 255 || (i = e.charCodeAt(s++)) > 255) throw new TypeError("invalid character found");
        r += $o[(t = n << 16 | o << 8 | i) >> 18 & 63] + $o[t >> 12 & 63] + $o[t >> 6 & 63] + $o[63 & t]
      }
      return a ? r.slice(0, a - 3) + "===".substring(a) : r
    },
    ai = Xo ? function (e) {
      return btoa(e)
    } : Yo ? function (e) {
      return Buffer.from(e, "binary").toString("base64")
    } : ri,
    si = Yo ? function (e) {
      return Buffer.from(e).toString("base64")
    } : function (e) {
      for (var t = [], n = 0, o = e.length; n < o; n += 4096) t.push(ti.apply(null, e.subarray(n, n + 4096)));
      return ai(t.join(""))
    },
    ui = function (e) {
      var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
      return t ? oi(si(e)) : si(e)
    },
    ci = function (e) {
      return unescape(encodeURIComponent(e))
    },
    li = Yo ? function (e) {
      return Buffer.from(e, "utf8").toString("base64")
    } : function (e) {
      return ai(ci(e))
    },
    di = function (e) {
      var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
      return t ? oi(li(e)) : li(e)
    },
    fi = function (e) {
      return di(e, !0)
    },
    hi = function (e) {
      return decodeURIComponent(escape(e))
    },
    pi = function (e) {
      if (e = e.replace(/\s+/g, ""), !ei.test(e)) throw new TypeError("malformed base64.");
      e += "==".slice(2 - (3 & e.length));
      for (var t, n, o, i = "", r = 0; r < e.length;) t = Qo[e.charAt(r++)] << 18 | Qo[e.charAt(r++)] << 12 | (n = Qo[e.charAt(r++)]) << 6 | (o = Qo[e.charAt(r++)]), i += 64 === n ? ti(t >> 16 & 255) : 64 === o ? ti(t >> 16 & 255, t >> 8 & 255) : ti(t >> 16 & 255, t >> 8 & 255, 255 & t);
      return i
    },
    vi = Ko ? function (e) {
      return atob(ii(e))
    } : Yo ? function (e) {
      return Buffer.from(e, "base64").toString("binary")
    } : pi,
    bi = Yo ? function (e) {
      return Buffer.from(e, "base64").toString("utf8")
    } : function (e) {
      return hi(vi(e))
    },
    mi = function (e) {
      return ii(e.replace(/[-_]/g, (function (e) {
        return "-" == e ? "+" : "/"
      })))
    },
    gi = function (e) {
      return bi(mi(e))
    },
    yi = Yo ? function (e) {
      return ni(Buffer.from(mi(e), "base64"))
    } : function (e) {
      return ni(vi(mi(e)), (function (e) {
        return e.charCodeAt(0)
      }))
    },
    _i = function (e) {
      return {
        value: e,
        enumerable: !1,
        writable: !0,
        configurable: !0
      }
    },
    wi = function () {
      var e = function (e, t) {
        return Object.defineProperty(String.prototype, e, _i(t))
      };
      e("fromBase64", (function () {
        return gi(this)
      })), e("toBase64", (function (e) {
        return di(this, e)
      })), e("toBase64URI", (function () {
        return di(this, !0)
      })), e("toBase64URL", (function () {
        return di(this, !0)
      })), e("toUint8Array", (function () {
        return yi(this)
      }))
    },
    ki = function () {
      var e = function (e, t) {
        return Object.defineProperty(Uint8Array.prototype, e, _i(t))
      };
      e("toBase64", (function (e) {
        return ui(this, e)
      })), e("toBase64URI", (function () {
        return ui(this, !0)
      })), e("toBase64URL", (function () {
        return ui(this, !0)
      }))
    },
    Ci = {
      version: Vo,
      VERSION: "3.4.5",
      atob: vi,
      atobPolyfill: pi,
      btoa: ai,
      btoaPolyfill: ri,
      fromBase64: gi,
      toBase64: di,
      encode: di,
      encodeURI: fi,
      encodeURL: fi,
      utob: ci,
      btou: hi,
      decode: gi,
      fromUint8Array: ui,
      toUint8Array: yi,
      extendString: wi,
      extendUint8Array: ki,
      extendBuiltins: function () {
        wi(), ki()
      }
    },
    Si = new(function () {
      function e() {
        t(this, e), this.oBase64 = Ci
      }
      return o(e, [{
        key: "browser",
        value: function () {
          var e = navigator.userAgent.toLowerCase(),
            t = /(edge)[/]([\w.]+)/.exec(e) || /(chrome)[/]([\w.]+)/.exec(e) || /(safari)[/]([\w.]+)/.exec(e) || /(opera)(?:.*version)?[/]([\w.]+)/.exec(e) || /(trident.*rv:)([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || e.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(e) || ["unknow", "0"];
          t.length > 0 && t[1].indexOf("trident") > -1 && (t[1] = "msie");
          var n = {};
          return n[t[1]] = !0, n.version = t[2], n
        }
      }, {
        key: "getCreateWndMode",
        value: function () {
          var e = navigator.userAgent,
            t = navigator.platform,
            n = "Win64" === t || "Win32" === t || "Windows" === t,
            o = this.browser(),
            i = !0;
          return window.top !== window ? i = !1 : n ? (e.indexOf("Windows NT 10.0") > -1 && o.mozilla && (i = !1), o.edge && (i = !1)) : i = !1, i
        }
      }, {
        key: "getWndPostion",
        value: function (e, t, n) {
          var o = 0,
            i = 0,
            r = e.getBoundingClientRect(),
            a = e.ownerDocument.defaultView,
            s = r.top + a.pageYOffset,
            u = r.left + a.pageXOffset,
            c = this.getDevicePixelRatio(),
            l = window.getComputedStyle(e),
            d = parseInt(l["border-left-width"].slice(0, -2), 10),
            f = parseInt(l["border-top-width"].slice(0, -2), 10);
          if (t)
            if (this.browser().msie) {
              var h = window,
                p = h.outerWidth - h.innerWidth - (h.screenLeft - h.screenX);
              o = u + (h.screenLeft - h.screenX) + d - p, i = s + (h.screenTop - h.screenY) + f
            } else {
              var v = 0,
                b = 0,
                m = Math.round((window.outerWidth - window.innerWidth) / 2);
              this.isWindows() && this.browser().chrome && (-8 === m || window.screen.height - window.outerHeight == 0 ? -8 === m && (v = 8, b = 8) : 8 === m ? v = -5 : 0 === m && (b = 8)), this.browser().mozilla && (7 === m || 6 === m ? v = -6 : 8 === m && (v = -8)), o = u + m + d + v, i = s + (window.outerHeight - window.innerHeight - m) + f + b
            }
          else {
            var g = window.top,
              y = 0,
              _ = 0,
              w = 0,
              k = 0;
            try {
              y = g.outerWidth - g.innerWidth, _ = g.outerHeight - g.innerHeight, w = g.screenLeft - g.screenX, k = g.screenTop - g.screenY
            } catch (e) {
              y = n.outerWidth - n.innerWidth, _ = n.outerHeight - n.innerHeight, w = n.screenLeft - n.screenX, k = n.screenTop - n.screenY
            }
            if (this.browser().msie) {
              0,
              o = u + w + d - 0,
              i = s + k + f
            }
            else {
              var C = y / 2;
              o = u + C + d, i = s + (_ - C) + f, this.browser().chrome && 0 === C && (o += 8, i += 8)
            }
          }
          this.isWindows() && (this.browser().chrome || this.browser().safari) && (o = u + d, i = s + f);
          var S = 0,
            R = 0;
          return (!this.browser().msie || this.browser().msie && "11.0" === this.browser().version) && (S = window.scrollX || window.pageXOffset, R = window.scrollY || window.pageYOffset), {
            left: o = Math.round((o - S) * c),
            top: i = Math.round((i - R) * c)
          }
        }
      }, {
        key: "detectPort",
        value: function (e, t, n) {
          var o = "HikCentralWebControlPort:".concat(e, "-").concat(t),
            i = this,
            r = 0,
            a = !1,
            s = null;
          sessionStorage && null !== (s = sessionStorage.getItem(o)) && (s = parseInt(s, 10));
          for (var u = [], c = e; c <= t; c++) c !== s && u.push(c);
          null !== s && u.unshift(s);
          for (var l = [], d = function () {
              r > 0 && clearTimeout(r)
            }, f = function () {
              for (var e = 0, t = l.length; e < t; e++) delete l[e]
            }, h = 0, p = (new Date).getTime(), v = function (e, t) {
              setTimeout((function () {
                l.push(i.createImageHttp(u[t], {
                  timeStamp: p + t,
                  success: function (e) {
                    ! function (e) {
                      sessionStorage && sessionStorage.setItem(o, e), !a && n.success && (d(), f(), n.success(e))
                    }(e)
                  },
                  error: function () {
                    h++, u.length === h && !a && n.error && (d(), f(), n.error())
                  }
                }))
              }), 100)
            }, b = 0, m = u.length; b < m; b++) v(0, b);
          r = setTimeout((function () {
            a = !0, n.error && (f(), n.error())
          }), 6e4)
        }
      }, {
        key: "createImageHttp",
        value: function (e, t) {
          var n = new Image;
          return n.onload = function () {
            t.success && t.success(e)
          }, n.onerror = function () {
            t.error && t.error()
          }, n.onabort = function () {
            t.abort && t.abort()
          }, n.src = "http://127.0.0.1:".concat(e, "/imghttp/local?update=").concat(t.timeStamp), n
        }
      }, {
        key: "utf8to16",
        value: function (e) {
          for (var t, n, o, i = "", r = 0, a = e.length; r < a;) switch ((t = e.charCodeAt(r++)) >> 4) {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
              i += e.charAt(r - 1);
              break;
            case 12:
            case 13:
              n = e.charCodeAt(r++), i += String.fromCharCode((31 & t) << 6 | 63 & n);
              break;
            case 14:
              n = e.charCodeAt(r++), o = e.charCodeAt(r++), i += String.fromCharCode((15 & t) << 12 | (63 & n) << 6 | (63 & o) << 0)
          }
          return i
        }
      }, {
        key: "createEventScript",
        value: function (e, t, n) {
          var o = document.createElement("script");
          o.htmlFor = e, o.event = t, o.innerHTML = n, document.getElementById(e).appendChild(o)
        }
      }, {
        key: "isMacOS",
        value: function () {
          return "MacIntel" === navigator.platform
        }
      }, {
        key: "isWindows",
        value: function () {
          return navigator.platform.indexOf("Win") > -1
        }
      }, {
        key: "getDevicePixelRatio",
        value: function () {
          var e = 1;
          return this.isMacOS() || (e = window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI), e
        }
      }, {
        key: "Base64",
        value: function () {
          return this.oBase64 || {}
        }
      }]), e
    }()),
    Ri = "　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　",
    qi = function (e) {
      window.top.document.title = window.top.document.title + Ri + e
    },
    Ii = function (e) {
      window.top.document.title = document.title.replace(Ri + e, "")
    };

  function Pi(e, t) {
    t && (qi = t), qi(e)
  }

  function xi(e, t) {
    t && (Ii = t), Ii(e)
  }
  var zi = function () {
      function e(n) {
        t(this, e), this.oOptions = Object.assign({
          iPort: -1,
          cbConnectSuccess: null,
          cbConnectError: null,
          cbConnectClose: null
        }, n), this.oWebSocket = null, this.szUUID = "", this.szVersion = "", this.oRequestList = {}, this.bNormalClose = !1, this.oWindowControlCallback = {}, this.oSadpCallback = {}, this.oSliceCallback = {}, this.oSerialCallback = {}, this.oUIControlCallback = {}, this.oUpgradeCallback = {}, this.init()
      }
      return o(e, [{
        key: "init",
        value: function () {
          var e = this,
            t = function () {
              e.oOptions.cbConnectClose && e.oOptions.cbConnectClose(e.bNormalClose), e.bNormalClose = !1
            };
          e.oWebSocket = new WebSocket("ws://127.0.0.1:".concat(e.oOptions.iPort)), e.oWebSocket.onerror = function () {}, e.oWebSocket.onopen = function () {
            var t = {
                sequence: Zo(),
                cmd: "system.connect"
              },
              n = JSON.stringify(t);
            e.oWebSocket.send(n)
          }, e.oWebSocket.onmessage = function (t) {
            var n = t.data,
              o = JSON.parse(n),
              i = o.sequence;
            void 0 === i && void 0 === o.cmd ? (e.szUUID = o.uuid, e.szVersion = o.version, e.oOptions.cbConnectSuccess && e.oOptions.cbConnectSuccess()) : void 0 !== o.cmd ? e.parseCmd(o) : void 0 !== e.oRequestList[i] && (0 === o.errorModule && 0 === o.errorCode ? e.oRequestList[i].resolve(o) : e.oRequestList[i].reject(o), delete e.oRequestList[i])
          }, e.oWebSocket.onclose = function () {
            e.oWebSocket = null, Si.browser().mozilla ? setTimeout((function () {
              t()
            }), 100) : t()
          }
        }
      }, {
        key: "setWindowControlCallback",
        value: function (e) {
          this.oWindowControlCallback = e
        }
      }, {
        key: "setSadpCallback",
        value: function (e) {
          this.oSadpCallback = e
        }
      }, {
        key: "setSliceCallback",
        value: function (e) {
          this.oSliceCallback = e
        }
      }, {
        key: "setSerialCallback",
        value: function (e) {
          this.oSerialCallback = e
        }
      }, {
        key: "setUIControlCallback",
        value: function (e) {
          this.oUIControlCallback = e
        }
      }, {
        key: "setUpgradeCallback",
        value: function (e) {
          this.oUpgradeCallback = e
        }
      }, {
        key: "getServiceVersion",
        value: function () {
          return this.szVersion
        }
      }, {
        key: "getRequestUUID",
        value: function () {
          return this.szUUID
        }
      }, {
        key: "disconnect",
        value: function () {
          this.bNormalClose = !0, this.oWebSocket && WebSocket.OPEN === this.oWebSocket.readyState && (this.oWebSocket.close(), delete this.oWebSocket)
        }
      }, {
        key: "sendRequest",
        value: function (e) {
          var t = this;
          return new Promise((function (n, o) {
            var i = Zo();
            e.sequence = i, t.oRequestList[i] = {
              resolve: n,
              reject: o
            }, e.uuid = t.szUUID, e.timestamp = "".concat((new Date).getTime());
            var r = JSON.stringify(e);
            t.oWebSocket && WebSocket.OPEN === t.oWebSocket.readyState ? t.oWebSocket.send(r) : o()
          }))
        }
      }, {
        key: "parseCmd",
        value: function (e) {
          var t = e.cmd.split("."),
            n = t[1].replace(/^[a-z]{1}/g, (function (e) {
              return e.toUpperCase()
            }));
          "window" === t[0] || "play" === t[0] ? this.oWindowControlCallback["cb".concat(n)] && this.oWindowControlCallback["cb".concat(n)](e) : "sadp" === t[0] ? this.oSadpCallback["cb".concat(n)] && this.oSadpCallback["cb".concat(n)](e) : "serial" === t[0] ? this.oSerialCallback["cb".concat(n)] && this.oSerialCallback["cb".concat(n)](e) : "slice" === t[0] ? this.oSliceCallback["cb".concat(n)] && this.oSliceCallback["cb".concat(n)](e) : "ui" === t[0] ? this.oUIControlCallback["cb".concat(n)] && this.oUIControlCallback["cb".concat(n)](e) : "upgrade" === t[0] && this.oUpgradeCallback["cb".concat(n)] && this.oUpgradeCallback["cb".concat(n)](e)
        }
      }]), e
    }(),
    Ei = a((function (t, n) {
      var o = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array;

      function i(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
      }
      n.assign = function (t) {
        for (var n = Array.prototype.slice.call(arguments, 1); n.length;) {
          var o = n.shift();
          if (o) {
            if ("object" !== e(o)) throw new TypeError(o + "must be non-object");
            for (var r in o) i(o, r) && (t[r] = o[r])
          }
        }
        return t
      }, n.shrinkBuf = function (e, t) {
        return e.length === t ? e : e.subarray ? e.subarray(0, t) : (e.length = t, e)
      };
      var r = {
          arraySet: function (e, t, n, o, i) {
            if (t.subarray && e.subarray) e.set(t.subarray(n, n + o), i);
            else
              for (var r = 0; r < o; r++) e[i + r] = t[n + r]
          },
          flattenChunks: function (e) {
            var t, n, o, i, r, a;
            for (o = 0, t = 0, n = e.length; t < n; t++) o += e[t].length;
            for (a = new Uint8Array(o), i = 0, t = 0, n = e.length; t < n; t++) r = e[t], a.set(r, i), i += r.length;
            return a
          }
        },
        a = {
          arraySet: function (e, t, n, o, i) {
            for (var r = 0; r < o; r++) e[i + r] = t[n + r]
          },
          flattenChunks: function (e) {
            return [].concat.apply([], e)
          }
        };
      n.setTyped = function (e) {
        e ? (n.Buf8 = Uint8Array, n.Buf16 = Uint16Array, n.Buf32 = Int32Array, n.assign(n, r)) : (n.Buf8 = Array, n.Buf16 = Array, n.Buf32 = Array, n.assign(n, a))
      }, n.setTyped(o)
    }));

  function Oi(e) {
    for (var t = e.length; --t >= 0;) e[t] = 0
  }
  var Ti = 256,
    Wi = 286,
    Di = 30,
    Ai = 15,
    Ui = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0],
    Mi = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13],
    Fi = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7],
    Bi = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15],
    Li = new Array(576);
  Oi(Li);
  var Ji = new Array(60);
  Oi(Ji);
  var ji = new Array(512);
  Oi(ji);
  var Ni = new Array(256);
  Oi(Ni);
  var Zi = new Array(29);
  Oi(Zi);
  var Hi, Gi, Vi, Ki = new Array(Di);

  function Xi(e, t, n, o, i) {
    this.static_tree = e, this.extra_bits = t, this.extra_base = n, this.elems = o, this.max_length = i, this.has_stree = e && e.length
  }

  function Yi(e, t) {
    this.dyn_tree = e, this.max_code = 0, this.stat_desc = t
  }

  function $i(e) {
    return e < 256 ? ji[e] : ji[256 + (e >>> 7)]
  }

  function Qi(e, t) {
    e.pending_buf[e.pending++] = 255 & t, e.pending_buf[e.pending++] = t >>> 8 & 255
  }

  function er(e, t, n) {
    e.bi_valid > 16 - n ? (e.bi_buf |= t << e.bi_valid & 65535, Qi(e, e.bi_buf), e.bi_buf = t >> 16 - e.bi_valid, e.bi_valid += n - 16) : (e.bi_buf |= t << e.bi_valid & 65535, e.bi_valid += n)
  }

  function tr(e, t, n) {
    er(e, n[2 * t], n[2 * t + 1])
  }

  function nr(e, t) {
    var n = 0;
    do {
      n |= 1 & e, e >>>= 1, n <<= 1
    } while (--t > 0);
    return n >>> 1
  }

  function or(e, t, n) {
    var o, i, r = new Array(16),
      a = 0;
    for (o = 1; o <= Ai; o++) r[o] = a = a + n[o - 1] << 1;
    for (i = 0; i <= t; i++) {
      var s = e[2 * i + 1];
      0 !== s && (e[2 * i] = nr(r[s]++, s))
    }
  }

  function ir(e) {
    var t;
    for (t = 0; t < Wi; t++) e.dyn_ltree[2 * t] = 0;
    for (t = 0; t < Di; t++) e.dyn_dtree[2 * t] = 0;
    for (t = 0; t < 19; t++) e.bl_tree[2 * t] = 0;
    e.dyn_ltree[512] = 1, e.opt_len = e.static_len = 0, e.last_lit = e.matches = 0
  }

  function rr(e) {
    e.bi_valid > 8 ? Qi(e, e.bi_buf) : e.bi_valid > 0 && (e.pending_buf[e.pending++] = e.bi_buf), e.bi_buf = 0, e.bi_valid = 0
  }

  function ar(e, t, n, o) {
    var i = 2 * t,
      r = 2 * n;
    return e[i] < e[r] || e[i] === e[r] && o[t] <= o[n]
  }

  function sr(e, t, n) {
    for (var o = e.heap[n], i = n << 1; i <= e.heap_len && (i < e.heap_len && ar(t, e.heap[i + 1], e.heap[i], e.depth) && i++, !ar(t, o, e.heap[i], e.depth));) e.heap[n] = e.heap[i], n = i, i <<= 1;
    e.heap[n] = o
  }

  function ur(e, t, n) {
    var o, i, r, a, s = 0;
    if (0 !== e.last_lit)
      do {
        o = e.pending_buf[e.d_buf + 2 * s] << 8 | e.pending_buf[e.d_buf + 2 * s + 1], i = e.pending_buf[e.l_buf + s], s++, 0 === o ? tr(e, i, t) : (tr(e, (r = Ni[i]) + Ti + 1, t), 0 !== (a = Ui[r]) && er(e, i -= Zi[r], a), tr(e, r = $i(--o), n), 0 !== (a = Mi[r]) && er(e, o -= Ki[r], a))
      } while (s < e.last_lit);
    tr(e, 256, t)
  }

  function cr(e, t) {
    var n, o, i, r = t.dyn_tree,
      a = t.stat_desc.static_tree,
      s = t.stat_desc.has_stree,
      u = t.stat_desc.elems,
      c = -1;
    for (e.heap_len = 0, e.heap_max = 573, n = 0; n < u; n++) 0 !== r[2 * n] ? (e.heap[++e.heap_len] = c = n, e.depth[n] = 0) : r[2 * n + 1] = 0;
    for (; e.heap_len < 2;) r[2 * (i = e.heap[++e.heap_len] = c < 2 ? ++c : 0)] = 1, e.depth[i] = 0, e.opt_len--, s && (e.static_len -= a[2 * i + 1]);
    for (t.max_code = c, n = e.heap_len >> 1; n >= 1; n--) sr(e, r, n);
    i = u;
    do {
      n = e.heap[1], e.heap[1] = e.heap[e.heap_len--], sr(e, r, 1), o = e.heap[1], e.heap[--e.heap_max] = n, e.heap[--e.heap_max] = o, r[2 * i] = r[2 * n] + r[2 * o], e.depth[i] = (e.depth[n] >= e.depth[o] ? e.depth[n] : e.depth[o]) + 1, r[2 * n + 1] = r[2 * o + 1] = i, e.heap[1] = i++, sr(e, r, 1)
    } while (e.heap_len >= 2);
    e.heap[--e.heap_max] = e.heap[1],
      function (e, t) {
        var n, o, i, r, a, s, u = t.dyn_tree,
          c = t.max_code,
          l = t.stat_desc.static_tree,
          d = t.stat_desc.has_stree,
          f = t.stat_desc.extra_bits,
          h = t.stat_desc.extra_base,
          p = t.stat_desc.max_length,
          v = 0;
        for (r = 0; r <= Ai; r++) e.bl_count[r] = 0;
        for (u[2 * e.heap[e.heap_max] + 1] = 0, n = e.heap_max + 1; n < 573; n++)(r = u[2 * u[2 * (o = e.heap[n]) + 1] + 1] + 1) > p && (r = p, v++), u[2 * o + 1] = r, o > c || (e.bl_count[r]++, a = 0, o >= h && (a = f[o - h]), s = u[2 * o], e.opt_len += s * (r + a), d && (e.static_len += s * (l[2 * o + 1] + a)));
        if (0 !== v) {
          do {
            for (r = p - 1; 0 === e.bl_count[r];) r--;
            e.bl_count[r]--, e.bl_count[r + 1] += 2, e.bl_count[p]--, v -= 2
          } while (v > 0);
          for (r = p; 0 !== r; r--)
            for (o = e.bl_count[r]; 0 !== o;)(i = e.heap[--n]) > c || (u[2 * i + 1] !== r && (e.opt_len += (r - u[2 * i + 1]) * u[2 * i], u[2 * i + 1] = r), o--)
        }
      }(e, t), or(r, c, e.bl_count)
  }

  function lr(e, t, n) {
    var o, i, r = -1,
      a = t[1],
      s = 0,
      u = 7,
      c = 4;
    for (0 === a && (u = 138, c = 3), t[2 * (n + 1) + 1] = 65535, o = 0; o <= n; o++) i = a, a = t[2 * (o + 1) + 1], ++s < u && i === a || (s < c ? e.bl_tree[2 * i] += s : 0 !== i ? (i !== r && e.bl_tree[2 * i]++, e.bl_tree[32]++) : s <= 10 ? e.bl_tree[34]++ : e.bl_tree[36]++, s = 0, r = i, 0 === a ? (u = 138, c = 3) : i === a ? (u = 6, c = 3) : (u = 7, c = 4))
  }

  function dr(e, t, n) {
    var o, i, r = -1,
      a = t[1],
      s = 0,
      u = 7,
      c = 4;
    for (0 === a && (u = 138, c = 3), o = 0; o <= n; o++)
      if (i = a, a = t[2 * (o + 1) + 1], !(++s < u && i === a)) {
        if (s < c)
          do {
            tr(e, i, e.bl_tree)
          } while (0 != --s);
        else 0 !== i ? (i !== r && (tr(e, i, e.bl_tree), s--), tr(e, 16, e.bl_tree), er(e, s - 3, 2)) : s <= 10 ? (tr(e, 17, e.bl_tree), er(e, s - 3, 3)) : (tr(e, 18, e.bl_tree), er(e, s - 11, 7));
        s = 0, r = i, 0 === a ? (u = 138, c = 3) : i === a ? (u = 6, c = 3) : (u = 7, c = 4)
      }
  }
  Oi(Ki);
  var fr = !1;

  function hr(e, t, n, o) {
    er(e, 0 + (o ? 1 : 0), 3),
      function (e, t, n, o) {
        rr(e), o && (Qi(e, n), Qi(e, ~n)), Ei.arraySet(e.pending_buf, e.window, t, n, e.pending), e.pending += n
      }(e, t, n, !0)
  }
  var pr = {
    _tr_init: function (e) {
      fr || (! function () {
        var e, t, n, o, i, r = new Array(16);
        for (n = 0, o = 0; o < 28; o++)
          for (Zi[o] = n, e = 0; e < 1 << Ui[o]; e++) Ni[n++] = o;
        for (Ni[n - 1] = o, i = 0, o = 0; o < 16; o++)
          for (Ki[o] = i, e = 0; e < 1 << Mi[o]; e++) ji[i++] = o;
        for (i >>= 7; o < Di; o++)
          for (Ki[o] = i << 7, e = 0; e < 1 << Mi[o] - 7; e++) ji[256 + i++] = o;
        for (t = 0; t <= Ai; t++) r[t] = 0;
        for (e = 0; e <= 143;) Li[2 * e + 1] = 8, e++, r[8]++;
        for (; e <= 255;) Li[2 * e + 1] = 9, e++, r[9]++;
        for (; e <= 279;) Li[2 * e + 1] = 7, e++, r[7]++;
        for (; e <= 287;) Li[2 * e + 1] = 8, e++, r[8]++;
        for (or(Li, 287, r), e = 0; e < Di; e++) Ji[2 * e + 1] = 5, Ji[2 * e] = nr(e, 5);
        Hi = new Xi(Li, Ui, 257, Wi, Ai), Gi = new Xi(Ji, Mi, 0, Di, Ai), Vi = new Xi(new Array(0), Fi, 0, 19, 7)
      }(), fr = !0), e.l_desc = new Yi(e.dyn_ltree, Hi), e.d_desc = new Yi(e.dyn_dtree, Gi), e.bl_desc = new Yi(e.bl_tree, Vi), e.bi_buf = 0, e.bi_valid = 0, ir(e)
    },
    _tr_stored_block: hr,
    _tr_flush_block: function (e, t, n, o) {
      var i, r, a = 0;
      e.level > 0 ? (2 === e.strm.data_type && (e.strm.data_type = function (e) {
        var t, n = 4093624447;
        for (t = 0; t <= 31; t++, n >>>= 1)
          if (1 & n && 0 !== e.dyn_ltree[2 * t]) return 0;
        if (0 !== e.dyn_ltree[18] || 0 !== e.dyn_ltree[20] || 0 !== e.dyn_ltree[26]) return 1;
        for (t = 32; t < Ti; t++)
          if (0 !== e.dyn_ltree[2 * t]) return 1;
        return 0
      }(e)), cr(e, e.l_desc), cr(e, e.d_desc), a = function (e) {
        var t;
        for (lr(e, e.dyn_ltree, e.l_desc.max_code), lr(e, e.dyn_dtree, e.d_desc.max_code), cr(e, e.bl_desc), t = 18; t >= 3 && 0 === e.bl_tree[2 * Bi[t] + 1]; t--);
        return e.opt_len += 3 * (t + 1) + 5 + 5 + 4, t
      }(e), i = e.opt_len + 3 + 7 >>> 3, (r = e.static_len + 3 + 7 >>> 3) <= i && (i = r)) : i = r = n + 5, n + 4 <= i && -1 !== t ? hr(e, t, n, o) : 4 === e.strategy || r === i ? (er(e, 2 + (o ? 1 : 0), 3), ur(e, Li, Ji)) : (er(e, 4 + (o ? 1 : 0), 3), function (e, t, n, o) {
        var i;
        for (er(e, t - 257, 5), er(e, n - 1, 5), er(e, o - 4, 4), i = 0; i < o; i++) er(e, e.bl_tree[2 * Bi[i] + 1], 3);
        dr(e, e.dyn_ltree, t - 1), dr(e, e.dyn_dtree, n - 1)
      }(e, e.l_desc.max_code + 1, e.d_desc.max_code + 1, a + 1), ur(e, e.dyn_ltree, e.dyn_dtree)), ir(e), o && rr(e)
    },
    _tr_tally: function (e, t, n) {
      return e.pending_buf[e.d_buf + 2 * e.last_lit] = t >>> 8 & 255, e.pending_buf[e.d_buf + 2 * e.last_lit + 1] = 255 & t, e.pending_buf[e.l_buf + e.last_lit] = 255 & n, e.last_lit++, 0 === t ? e.dyn_ltree[2 * n]++ : (e.matches++, t--, e.dyn_ltree[2 * (Ni[n] + Ti + 1)]++, e.dyn_dtree[2 * $i(t)]++), e.last_lit === e.lit_bufsize - 1
    },
    _tr_align: function (e) {
      er(e, 2, 3), tr(e, 256, Li),
        function (e) {
          16 === e.bi_valid ? (Qi(e, e.bi_buf), e.bi_buf = 0, e.bi_valid = 0) : e.bi_valid >= 8 && (e.pending_buf[e.pending++] = 255 & e.bi_buf, e.bi_buf >>= 8, e.bi_valid -= 8)
        }(e)
    }
  };
  var vr = function (e, t, n, o) {
    for (var i = 65535 & e | 0, r = e >>> 16 & 65535 | 0, a = 0; 0 !== n;) {
      n -= a = n > 2e3 ? 2e3 : n;
      do {
        r = r + (i = i + t[o++] | 0) | 0
      } while (--a);
      i %= 65521, r %= 65521
    }
    return i | r << 16 | 0
  };
  var br = function () {
    for (var e, t = [], n = 0; n < 256; n++) {
      e = n;
      for (var o = 0; o < 8; o++) e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1;
      t[n] = e
    }
    return t
  }();
  var mr, gr = function (e, t, n, o) {
      var i = br,
        r = o + n;
      e ^= -1;
      for (var a = o; a < r; a++) e = e >>> 8 ^ i[255 & (e ^ t[a])];
      return -1 ^ e
    },
    yr = {
      2: "need dictionary",
      1: "stream end",
      0: "",
      "-1": "file error",
      "-2": "stream error",
      "-3": "data error",
      "-4": "insufficient memory",
      "-5": "buffer error",
      "-6": "incompatible version"
    },
    _r = -2,
    wr = 258,
    kr = 262,
    Cr = 103,
    Sr = 113,
    Rr = 666;

  function qr(e, t) {
    return e.msg = yr[t], t
  }

  function Ir(e) {
    return (e << 1) - (e > 4 ? 9 : 0)
  }

  function Pr(e) {
    for (var t = e.length; --t >= 0;) e[t] = 0
  }

  function xr(e) {
    var t = e.state,
      n = t.pending;
    n > e.avail_out && (n = e.avail_out), 0 !== n && (Ei.arraySet(e.output, t.pending_buf, t.pending_out, n, e.next_out), e.next_out += n, t.pending_out += n, e.total_out += n, e.avail_out -= n, t.pending -= n, 0 === t.pending && (t.pending_out = 0))
  }

  function zr(e, t) {
    pr._tr_flush_block(e, e.block_start >= 0 ? e.block_start : -1, e.strstart - e.block_start, t), e.block_start = e.strstart, xr(e.strm)
  }

  function Er(e, t) {
    e.pending_buf[e.pending++] = t
  }

  function Or(e, t) {
    e.pending_buf[e.pending++] = t >>> 8 & 255, e.pending_buf[e.pending++] = 255 & t
  }

  function Tr(e, t) {
    var n, o, i = e.max_chain_length,
      r = e.strstart,
      a = e.prev_length,
      s = e.nice_match,
      u = e.strstart > e.w_size - kr ? e.strstart - (e.w_size - kr) : 0,
      c = e.window,
      l = e.w_mask,
      d = e.prev,
      f = e.strstart + wr,
      h = c[r + a - 1],
      p = c[r + a];
    e.prev_length >= e.good_match && (i >>= 2), s > e.lookahead && (s = e.lookahead);
    do {
      if (c[(n = t) + a] === p && c[n + a - 1] === h && c[n] === c[r] && c[++n] === c[r + 1]) {
        r += 2, n++;
        do {} while (c[++r] === c[++n] && c[++r] === c[++n] && c[++r] === c[++n] && c[++r] === c[++n] && c[++r] === c[++n] && c[++r] === c[++n] && c[++r] === c[++n] && c[++r] === c[++n] && r < f);
        if (o = wr - (f - r), r = f - wr, o > a) {
          if (e.match_start = t, a = o, o >= s) break;
          h = c[r + a - 1], p = c[r + a]
        }
      }
    } while ((t = d[t & l]) > u && 0 != --i);
    return a <= e.lookahead ? a : e.lookahead
  }

  function Wr(e) {
    var t, n, o, i, r, a, s, u, c, l, d = e.w_size;
    do {
      if (i = e.window_size - e.lookahead - e.strstart, e.strstart >= d + (d - kr)) {
        Ei.arraySet(e.window, e.window, d, d, 0), e.match_start -= d, e.strstart -= d, e.block_start -= d, t = n = e.hash_size;
        do {
          o = e.head[--t], e.head[t] = o >= d ? o - d : 0
        } while (--n);
        t = n = d;
        do {
          o = e.prev[--t], e.prev[t] = o >= d ? o - d : 0
        } while (--n);
        i += d
      }
      if (0 === e.strm.avail_in) break;
      if (a = e.strm, s = e.window, u = e.strstart + e.lookahead, c = i, l = void 0, (l = a.avail_in) > c && (l = c), n = 0 === l ? 0 : (a.avail_in -= l, Ei.arraySet(s, a.input, a.next_in, l, u), 1 === a.state.wrap ? a.adler = vr(a.adler, s, l, u) : 2 === a.state.wrap && (a.adler = gr(a.adler, s, l, u)), a.next_in += l, a.total_in += l, l), e.lookahead += n, e.lookahead + e.insert >= 3)
        for (r = e.strstart - e.insert, e.ins_h = e.window[r], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[r + 1]) & e.hash_mask; e.insert && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[r + 3 - 1]) & e.hash_mask, e.prev[r & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = r, r++, e.insert--, !(e.lookahead + e.insert < 3)););
    } while (e.lookahead < kr && 0 !== e.strm.avail_in)
  }

  function Dr(e, t) {
    for (var n, o;;) {
      if (e.lookahead < kr) {
        if (Wr(e), e.lookahead < kr && 0 === t) return 1;
        if (0 === e.lookahead) break
      }
      if (n = 0, e.lookahead >= 3 && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + 3 - 1]) & e.hash_mask, n = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), 0 !== n && e.strstart - n <= e.w_size - kr && (e.match_length = Tr(e, n)), e.match_length >= 3)
        if (o = pr._tr_tally(e, e.strstart - e.match_start, e.match_length - 3), e.lookahead -= e.match_length, e.match_length <= e.max_lazy_match && e.lookahead >= 3) {
          e.match_length--;
          do {
            e.strstart++, e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + 3 - 1]) & e.hash_mask, n = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart
          } while (0 != --e.match_length);
          e.strstart++
        } else e.strstart += e.match_length, e.match_length = 0, e.ins_h = e.window[e.strstart], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + 1]) & e.hash_mask;
      else o = pr._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++;
      if (o && (zr(e, !1), 0 === e.strm.avail_out)) return 1
    }
    return e.insert = e.strstart < 2 ? e.strstart : 2, 4 === t ? (zr(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (zr(e, !1), 0 === e.strm.avail_out) ? 1 : 2
  }

  function Ar(e, t) {
    for (var n, o, i;;) {
      if (e.lookahead < kr) {
        if (Wr(e), e.lookahead < kr && 0 === t) return 1;
        if (0 === e.lookahead) break
      }
      if (n = 0, e.lookahead >= 3 && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + 3 - 1]) & e.hash_mask, n = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), e.prev_length = e.match_length, e.prev_match = e.match_start, e.match_length = 2, 0 !== n && e.prev_length < e.max_lazy_match && e.strstart - n <= e.w_size - kr && (e.match_length = Tr(e, n), e.match_length <= 5 && (1 === e.strategy || 3 === e.match_length && e.strstart - e.match_start > 4096) && (e.match_length = 2)), e.prev_length >= 3 && e.match_length <= e.prev_length) {
        i = e.strstart + e.lookahead - 3, o = pr._tr_tally(e, e.strstart - 1 - e.prev_match, e.prev_length - 3), e.lookahead -= e.prev_length - 1, e.prev_length -= 2;
        do {
          ++e.strstart <= i && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + 3 - 1]) & e.hash_mask, n = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart)
        } while (0 != --e.prev_length);
        if (e.match_available = 0, e.match_length = 2, e.strstart++, o && (zr(e, !1), 0 === e.strm.avail_out)) return 1
      } else if (e.match_available) {
        if ((o = pr._tr_tally(e, 0, e.window[e.strstart - 1])) && zr(e, !1), e.strstart++, e.lookahead--, 0 === e.strm.avail_out) return 1
      } else e.match_available = 1, e.strstart++, e.lookahead--
    }
    return e.match_available && (o = pr._tr_tally(e, 0, e.window[e.strstart - 1]), e.match_available = 0), e.insert = e.strstart < 2 ? e.strstart : 2, 4 === t ? (zr(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (zr(e, !1), 0 === e.strm.avail_out) ? 1 : 2
  }

  function Ur(e, t, n, o, i) {
    this.good_length = e, this.max_lazy = t, this.nice_length = n, this.max_chain = o, this.func = i
  }

  function Mr() {
    this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = 8, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new Ei.Buf16(1146), this.dyn_dtree = new Ei.Buf16(122), this.bl_tree = new Ei.Buf16(78), Pr(this.dyn_ltree), Pr(this.dyn_dtree), Pr(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new Ei.Buf16(16), this.heap = new Ei.Buf16(573), Pr(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new Ei.Buf16(573), Pr(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0
  }

  function Fr(e) {
    var t;
    return e && e.state ? (e.total_in = e.total_out = 0, e.data_type = 2, (t = e.state).pending = 0, t.pending_out = 0, t.wrap < 0 && (t.wrap = -t.wrap), t.status = t.wrap ? 42 : Sr, e.adler = 2 === t.wrap ? 0 : 1, t.last_flush = 0, pr._tr_init(t), 0) : qr(e, _r)
  }

  function Br(e) {
    var t, n = Fr(e);
    return 0 === n && ((t = e.state).window_size = 2 * t.w_size, Pr(t.head), t.max_lazy_match = mr[t.level].max_lazy, t.good_match = mr[t.level].good_length, t.nice_match = mr[t.level].nice_length, t.max_chain_length = mr[t.level].max_chain, t.strstart = 0, t.block_start = 0, t.lookahead = 0, t.insert = 0, t.match_length = t.prev_length = 2, t.match_available = 0, t.ins_h = 0), n
  }

  function Lr(e, t, n, o, i, r) {
    if (!e) return _r;
    var a = 1;
    if (-1 === t && (t = 6), o < 0 ? (a = 0, o = -o) : o > 15 && (a = 2, o -= 16), i < 1 || i > 9 || 8 !== n || o < 8 || o > 15 || t < 0 || t > 9 || r < 0 || r > 4) return qr(e, _r);
    8 === o && (o = 9);
    var s = new Mr;
    return e.state = s, s.strm = e, s.wrap = a, s.gzhead = null, s.w_bits = o, s.w_size = 1 << s.w_bits, s.w_mask = s.w_size - 1, s.hash_bits = i + 7, s.hash_size = 1 << s.hash_bits, s.hash_mask = s.hash_size - 1, s.hash_shift = ~~((s.hash_bits + 3 - 1) / 3), s.window = new Ei.Buf8(2 * s.w_size), s.head = new Ei.Buf16(s.hash_size), s.prev = new Ei.Buf16(s.w_size), s.lit_bufsize = 1 << i + 6, s.pending_buf_size = 4 * s.lit_bufsize, s.pending_buf = new Ei.Buf8(s.pending_buf_size), s.d_buf = 1 * s.lit_bufsize, s.l_buf = 3 * s.lit_bufsize, s.level = t, s.strategy = r, s.method = n, Br(e)
  }
  mr = [new Ur(0, 0, 0, 0, (function (e, t) {
    var n = 65535;
    for (n > e.pending_buf_size - 5 && (n = e.pending_buf_size - 5);;) {
      if (e.lookahead <= 1) {
        if (Wr(e), 0 === e.lookahead && 0 === t) return 1;
        if (0 === e.lookahead) break
      }
      e.strstart += e.lookahead, e.lookahead = 0;
      var o = e.block_start + n;
      if ((0 === e.strstart || e.strstart >= o) && (e.lookahead = e.strstart - o, e.strstart = o, zr(e, !1), 0 === e.strm.avail_out)) return 1;
      if (e.strstart - e.block_start >= e.w_size - kr && (zr(e, !1), 0 === e.strm.avail_out)) return 1
    }
    return e.insert = 0, 4 === t ? (zr(e, !0), 0 === e.strm.avail_out ? 3 : 4) : (e.strstart > e.block_start && (zr(e, !1), e.strm.avail_out), 1)
  })), new Ur(4, 4, 8, 4, Dr), new Ur(4, 5, 16, 8, Dr), new Ur(4, 6, 32, 32, Dr), new Ur(4, 4, 16, 16, Ar), new Ur(8, 16, 32, 32, Ar), new Ur(8, 16, 128, 128, Ar), new Ur(8, 32, 128, 256, Ar), new Ur(32, 128, 258, 1024, Ar), new Ur(32, 258, 258, 4096, Ar)];
  var Jr = {
      deflateInit: function (e, t) {
        return Lr(e, t, 8, 15, 8, 0)
      },
      deflateInit2: Lr,
      deflateReset: Br,
      deflateResetKeep: Fr,
      deflateSetHeader: function (e, t) {
        return e && e.state ? 2 !== e.state.wrap ? _r : (e.state.gzhead = t, 0) : _r
      },
      deflate: function (e, t) {
        var n, o, i, r;
        if (!e || !e.state || t > 5 || t < 0) return e ? qr(e, _r) : _r;
        if (o = e.state, !e.output || !e.input && 0 !== e.avail_in || o.status === Rr && 4 !== t) return qr(e, 0 === e.avail_out ? -5 : _r);
        if (o.strm = e, n = o.last_flush, o.last_flush = t, 42 === o.status)
          if (2 === o.wrap) e.adler = 0, Er(o, 31), Er(o, 139), Er(o, 8), o.gzhead ? (Er(o, (o.gzhead.text ? 1 : 0) + (o.gzhead.hcrc ? 2 : 0) + (o.gzhead.extra ? 4 : 0) + (o.gzhead.name ? 8 : 0) + (o.gzhead.comment ? 16 : 0)), Er(o, 255 & o.gzhead.time), Er(o, o.gzhead.time >> 8 & 255), Er(o, o.gzhead.time >> 16 & 255), Er(o, o.gzhead.time >> 24 & 255), Er(o, 9 === o.level ? 2 : o.strategy >= 2 || o.level < 2 ? 4 : 0), Er(o, 255 & o.gzhead.os), o.gzhead.extra && o.gzhead.extra.length && (Er(o, 255 & o.gzhead.extra.length), Er(o, o.gzhead.extra.length >> 8 & 255)), o.gzhead.hcrc && (e.adler = gr(e.adler, o.pending_buf, o.pending, 0)), o.gzindex = 0, o.status = 69) : (Er(o, 0), Er(o, 0), Er(o, 0), Er(o, 0), Er(o, 0), Er(o, 9 === o.level ? 2 : o.strategy >= 2 || o.level < 2 ? 4 : 0), Er(o, 3), o.status = Sr);
          else {
            var a = 8 + (o.w_bits - 8 << 4) << 8;
            a |= (o.strategy >= 2 || o.level < 2 ? 0 : o.level < 6 ? 1 : 6 === o.level ? 2 : 3) << 6, 0 !== o.strstart && (a |= 32), a += 31 - a % 31, o.status = Sr, Or(o, a), 0 !== o.strstart && (Or(o, e.adler >>> 16), Or(o, 65535 & e.adler)), e.adler = 1
          } if (69 === o.status)
          if (o.gzhead.extra) {
            for (i = o.pending; o.gzindex < (65535 & o.gzhead.extra.length) && (o.pending !== o.pending_buf_size || (o.gzhead.hcrc && o.pending > i && (e.adler = gr(e.adler, o.pending_buf, o.pending - i, i)), xr(e), i = o.pending, o.pending !== o.pending_buf_size));) Er(o, 255 & o.gzhead.extra[o.gzindex]), o.gzindex++;
            o.gzhead.hcrc && o.pending > i && (e.adler = gr(e.adler, o.pending_buf, o.pending - i, i)), o.gzindex === o.gzhead.extra.length && (o.gzindex = 0, o.status = 73)
          } else o.status = 73;
        if (73 === o.status)
          if (o.gzhead.name) {
            i = o.pending;
            do {
              if (o.pending === o.pending_buf_size && (o.gzhead.hcrc && o.pending > i && (e.adler = gr(e.adler, o.pending_buf, o.pending - i, i)), xr(e), i = o.pending, o.pending === o.pending_buf_size)) {
                r = 1;
                break
              }
              r = o.gzindex < o.gzhead.name.length ? 255 & o.gzhead.name.charCodeAt(o.gzindex++) : 0, Er(o, r)
            } while (0 !== r);
            o.gzhead.hcrc && o.pending > i && (e.adler = gr(e.adler, o.pending_buf, o.pending - i, i)), 0 === r && (o.gzindex = 0, o.status = 91)
          } else o.status = 91;
        if (91 === o.status)
          if (o.gzhead.comment) {
            i = o.pending;
            do {
              if (o.pending === o.pending_buf_size && (o.gzhead.hcrc && o.pending > i && (e.adler = gr(e.adler, o.pending_buf, o.pending - i, i)), xr(e), i = o.pending, o.pending === o.pending_buf_size)) {
                r = 1;
                break
              }
              r = o.gzindex < o.gzhead.comment.length ? 255 & o.gzhead.comment.charCodeAt(o.gzindex++) : 0, Er(o, r)
            } while (0 !== r);
            o.gzhead.hcrc && o.pending > i && (e.adler = gr(e.adler, o.pending_buf, o.pending - i, i)), 0 === r && (o.status = Cr)
          } else o.status = Cr;
        if (o.status === Cr && (o.gzhead.hcrc ? (o.pending + 2 > o.pending_buf_size && xr(e), o.pending + 2 <= o.pending_buf_size && (Er(o, 255 & e.adler), Er(o, e.adler >> 8 & 255), e.adler = 0, o.status = Sr)) : o.status = Sr), 0 !== o.pending) {
          if (xr(e), 0 === e.avail_out) return o.last_flush = -1, 0
        } else if (0 === e.avail_in && Ir(t) <= Ir(n) && 4 !== t) return qr(e, -5);
        if (o.status === Rr && 0 !== e.avail_in) return qr(e, -5);
        if (0 !== e.avail_in || 0 !== o.lookahead || 0 !== t && o.status !== Rr) {
          var s = 2 === o.strategy ? function (e, t) {
            for (var n;;) {
              if (0 === e.lookahead && (Wr(e), 0 === e.lookahead)) {
                if (0 === t) return 1;
                break
              }
              if (e.match_length = 0, n = pr._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++, n && (zr(e, !1), 0 === e.strm.avail_out)) return 1
            }
            return e.insert = 0, 4 === t ? (zr(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (zr(e, !1), 0 === e.strm.avail_out) ? 1 : 2
          }(o, t) : 3 === o.strategy ? function (e, t) {
            for (var n, o, i, r, a = e.window;;) {
              if (e.lookahead <= wr) {
                if (Wr(e), e.lookahead <= wr && 0 === t) return 1;
                if (0 === e.lookahead) break
              }
              if (e.match_length = 0, e.lookahead >= 3 && e.strstart > 0 && (o = a[i = e.strstart - 1]) === a[++i] && o === a[++i] && o === a[++i]) {
                r = e.strstart + wr;
                do {} while (o === a[++i] && o === a[++i] && o === a[++i] && o === a[++i] && o === a[++i] && o === a[++i] && o === a[++i] && o === a[++i] && i < r);
                e.match_length = wr - (r - i), e.match_length > e.lookahead && (e.match_length = e.lookahead)
              }
              if (e.match_length >= 3 ? (n = pr._tr_tally(e, 1, e.match_length - 3), e.lookahead -= e.match_length, e.strstart += e.match_length, e.match_length = 0) : (n = pr._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++), n && (zr(e, !1), 0 === e.strm.avail_out)) return 1
            }
            return e.insert = 0, 4 === t ? (zr(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (zr(e, !1), 0 === e.strm.avail_out) ? 1 : 2
          }(o, t) : mr[o.level].func(o, t);
          if (3 !== s && 4 !== s || (o.status = Rr), 1 === s || 3 === s) return 0 === e.avail_out && (o.last_flush = -1), 0;
          if (2 === s && (1 === t ? pr._tr_align(o) : 5 !== t && (pr._tr_stored_block(o, 0, 0, !1), 3 === t && (Pr(o.head), 0 === o.lookahead && (o.strstart = 0, o.block_start = 0, o.insert = 0))), xr(e), 0 === e.avail_out)) return o.last_flush = -1, 0
        }
        return 4 !== t ? 0 : o.wrap <= 0 ? 1 : (2 === o.wrap ? (Er(o, 255 & e.adler), Er(o, e.adler >> 8 & 255), Er(o, e.adler >> 16 & 255), Er(o, e.adler >> 24 & 255), Er(o, 255 & e.total_in), Er(o, e.total_in >> 8 & 255), Er(o, e.total_in >> 16 & 255), Er(o, e.total_in >> 24 & 255)) : (Or(o, e.adler >>> 16), Or(o, 65535 & e.adler)), xr(e), o.wrap > 0 && (o.wrap = -o.wrap), 0 !== o.pending ? 0 : 1)
      },
      deflateEnd: function (e) {
        var t;
        return e && e.state ? 42 !== (t = e.state.status) && 69 !== t && 73 !== t && 91 !== t && t !== Cr && t !== Sr && t !== Rr ? qr(e, _r) : (e.state = null, t === Sr ? qr(e, -3) : 0) : _r
      },
      deflateSetDictionary: function (e, t) {
        var n, o, i, r, a, s, u, c, l = t.length;
        if (!e || !e.state) return _r;
        if (2 === (r = (n = e.state).wrap) || 1 === r && 42 !== n.status || n.lookahead) return _r;
        for (1 === r && (e.adler = vr(e.adler, t, l, 0)), n.wrap = 0, l >= n.w_size && (0 === r && (Pr(n.head), n.strstart = 0, n.block_start = 0, n.insert = 0), c = new Ei.Buf8(n.w_size), Ei.arraySet(c, t, l - n.w_size, n.w_size, 0), t = c, l = n.w_size), a = e.avail_in, s = e.next_in, u = e.input, e.avail_in = l, e.next_in = 0, e.input = t, Wr(n); n.lookahead >= 3;) {
          o = n.strstart, i = n.lookahead - 2;
          do {
            n.ins_h = (n.ins_h << n.hash_shift ^ n.window[o + 3 - 1]) & n.hash_mask, n.prev[o & n.w_mask] = n.head[n.ins_h], n.head[n.ins_h] = o, o++
          } while (--i);
          n.strstart = o, n.lookahead = 2, Wr(n)
        }
        return n.strstart += n.lookahead, n.block_start = n.strstart, n.insert = n.lookahead, n.lookahead = 0, n.match_length = n.prev_length = 2, n.match_available = 0, e.next_in = s, e.input = u, e.avail_in = a, n.wrap = r, 0
      },
      deflateInfo: "pako deflate (from Nodeca project)"
    },
    jr = !0,
    Nr = !0;
  try {
    String.fromCharCode.apply(null, [0])
  } catch (e) {
    jr = !1
  }
  try {
    String.fromCharCode.apply(null, new Uint8Array(1))
  } catch (e) {
    Nr = !1
  }
  for (var Zr = new Ei.Buf8(256), Hr = 0; Hr < 256; Hr++) Zr[Hr] = Hr >= 252 ? 6 : Hr >= 248 ? 5 : Hr >= 240 ? 4 : Hr >= 224 ? 3 : Hr >= 192 ? 2 : 1;
  Zr[254] = Zr[254] = 1;

  function Gr(e, t) {
    if (t < 65534 && (e.subarray && Nr || !e.subarray && jr)) return String.fromCharCode.apply(null, Ei.shrinkBuf(e, t));
    for (var n = "", o = 0; o < t; o++) n += String.fromCharCode(e[o]);
    return n
  }
  var Vr = function (e) {
      var t, n, o, i, r, a = e.length,
        s = 0;
      for (i = 0; i < a; i++) 55296 == (64512 & (n = e.charCodeAt(i))) && i + 1 < a && 56320 == (64512 & (o = e.charCodeAt(i + 1))) && (n = 65536 + (n - 55296 << 10) + (o - 56320), i++), s += n < 128 ? 1 : n < 2048 ? 2 : n < 65536 ? 3 : 4;
      for (t = new Ei.Buf8(s), r = 0, i = 0; r < s; i++) 55296 == (64512 & (n = e.charCodeAt(i))) && i + 1 < a && 56320 == (64512 & (o = e.charCodeAt(i + 1))) && (n = 65536 + (n - 55296 << 10) + (o - 56320), i++), n < 128 ? t[r++] = n : n < 2048 ? (t[r++] = 192 | n >>> 6, t[r++] = 128 | 63 & n) : n < 65536 ? (t[r++] = 224 | n >>> 12, t[r++] = 128 | n >>> 6 & 63, t[r++] = 128 | 63 & n) : (t[r++] = 240 | n >>> 18, t[r++] = 128 | n >>> 12 & 63, t[r++] = 128 | n >>> 6 & 63, t[r++] = 128 | 63 & n);
      return t
    },
    Kr = function (e) {
      return Gr(e, e.length)
    },
    Xr = function (e) {
      for (var t = new Ei.Buf8(e.length), n = 0, o = t.length; n < o; n++) t[n] = e.charCodeAt(n);
      return t
    },
    Yr = function (e, t) {
      var n, o, i, r, a = t || e.length,
        s = new Array(2 * a);
      for (o = 0, n = 0; n < a;)
        if ((i = e[n++]) < 128) s[o++] = i;
        else if ((r = Zr[i]) > 4) s[o++] = 65533, n += r - 1;
      else {
        for (i &= 2 === r ? 31 : 3 === r ? 15 : 7; r > 1 && n < a;) i = i << 6 | 63 & e[n++], r--;
        r > 1 ? s[o++] = 65533 : i < 65536 ? s[o++] = i : (i -= 65536, s[o++] = 55296 | i >> 10 & 1023, s[o++] = 56320 | 1023 & i)
      }
      return Gr(s, o)
    },
    $r = function (e, t) {
      var n;
      for ((t = t || e.length) > e.length && (t = e.length), n = t - 1; n >= 0 && 128 == (192 & e[n]);) n--;
      return n < 0 || 0 === n ? t : n + Zr[e[n]] > t ? n : t
    };
  var Qr = function () {
      this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0
    },
    ea = Object.prototype.toString;

  function ta(e) {
    if (!(this instanceof ta)) return new ta(e);
    this.options = Ei.assign({
      level: -1,
      method: 8,
      chunkSize: 16384,
      windowBits: 15,
      memLevel: 8,
      strategy: 0,
      to: ""
    }, e || {});
    var t = this.options;
    t.raw && t.windowBits > 0 ? t.windowBits = -t.windowBits : t.gzip && t.windowBits > 0 && t.windowBits < 16 && (t.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new Qr, this.strm.avail_out = 0;
    var n = Jr.deflateInit2(this.strm, t.level, t.method, t.windowBits, t.memLevel, t.strategy);
    if (0 !== n) throw new Error(yr[n]);
    if (t.header && Jr.deflateSetHeader(this.strm, t.header), t.dictionary) {
      var o;
      if (o = "string" == typeof t.dictionary ? Vr(t.dictionary) : "[object ArrayBuffer]" === ea.call(t.dictionary) ? new Uint8Array(t.dictionary) : t.dictionary, 0 !== (n = Jr.deflateSetDictionary(this.strm, o))) throw new Error(yr[n]);
      this._dict_set = !0
    }
  }

  function na(e, t) {
    var n = new ta(t);
    if (n.push(e, !0), n.err) throw n.msg || yr[n.err];
    return n.result
  }
  ta.prototype.push = function (e, t) {
    var n, o, i = this.strm,
      r = this.options.chunkSize;
    if (this.ended) return !1;
    o = t === ~~t ? t : !0 === t ? 4 : 0, "string" == typeof e ? i.input = Vr(e) : "[object ArrayBuffer]" === ea.call(e) ? i.input = new Uint8Array(e) : i.input = e, i.next_in = 0, i.avail_in = i.input.length;
    do {
      if (0 === i.avail_out && (i.output = new Ei.Buf8(r), i.next_out = 0, i.avail_out = r), 1 !== (n = Jr.deflate(i, o)) && 0 !== n) return this.onEnd(n), this.ended = !0, !1;
      0 !== i.avail_out && (0 !== i.avail_in || 4 !== o && 2 !== o) || ("string" === this.options.to ? this.onData(Kr(Ei.shrinkBuf(i.output, i.next_out))) : this.onData(Ei.shrinkBuf(i.output, i.next_out)))
    } while ((i.avail_in > 0 || 0 === i.avail_out) && 1 !== n);
    return 4 === o ? (n = Jr.deflateEnd(this.strm), this.onEnd(n), this.ended = !0, 0 === n) : 2 !== o || (this.onEnd(0), i.avail_out = 0, !0)
  }, ta.prototype.onData = function (e) {
    this.chunks.push(e)
  }, ta.prototype.onEnd = function (e) {
    0 === e && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = Ei.flattenChunks(this.chunks)), this.chunks = [], this.err = e, this.msg = this.strm.msg
  };
  var oa = {
      Deflate: ta,
      deflate: na,
      deflateRaw: function (e, t) {
        return (t = t || {}).raw = !0, na(e, t)
      },
      gzip: function (e, t) {
        return (t = t || {}).gzip = !0, na(e, t)
      }
    },
    ia = function (e, t) {
      var n, o, i, r, a, s, u, c, l, d, f, h, p, v, b, m, g, y, _, w, k, C, S, R, q;
      n = e.state, o = e.next_in, R = e.input, i = o + (e.avail_in - 5), r = e.next_out, q = e.output, a = r - (t - e.avail_out), s = r + (e.avail_out - 257), u = n.dmax, c = n.wsize, l = n.whave, d = n.wnext, f = n.window, h = n.hold, p = n.bits, v = n.lencode, b = n.distcode, m = (1 << n.lenbits) - 1, g = (1 << n.distbits) - 1;
      e: do {
        p < 15 && (h += R[o++] << p, p += 8, h += R[o++] << p, p += 8), y = v[h & m];
        t: for (;;) {
          if (h >>>= _ = y >>> 24, p -= _, 0 === (_ = y >>> 16 & 255)) q[r++] = 65535 & y;
          else {
            if (!(16 & _)) {
              if (0 == (64 & _)) {
                y = v[(65535 & y) + (h & (1 << _) - 1)];
                continue t
              }
              if (32 & _) {
                n.mode = 12;
                break e
              }
              e.msg = "invalid literal/length code", n.mode = 30;
              break e
            }
            w = 65535 & y, (_ &= 15) && (p < _ && (h += R[o++] << p, p += 8), w += h & (1 << _) - 1, h >>>= _, p -= _), p < 15 && (h += R[o++] << p, p += 8, h += R[o++] << p, p += 8), y = b[h & g];
            n: for (;;) {
              if (h >>>= _ = y >>> 24, p -= _, !(16 & (_ = y >>> 16 & 255))) {
                if (0 == (64 & _)) {
                  y = b[(65535 & y) + (h & (1 << _) - 1)];
                  continue n
                }
                e.msg = "invalid distance code", n.mode = 30;
                break e
              }
              if (k = 65535 & y, p < (_ &= 15) && (h += R[o++] << p, (p += 8) < _ && (h += R[o++] << p, p += 8)), (k += h & (1 << _) - 1) > u) {
                e.msg = "invalid distance too far back", n.mode = 30;
                break e
              }
              if (h >>>= _, p -= _, k > (_ = r - a)) {
                if ((_ = k - _) > l && n.sane) {
                  e.msg = "invalid distance too far back", n.mode = 30;
                  break e
                }
                if (C = 0, S = f, 0 === d) {
                  if (C += c - _, _ < w) {
                    w -= _;
                    do {
                      q[r++] = f[C++]
                    } while (--_);
                    C = r - k, S = q
                  }
                } else if (d < _) {
                  if (C += c + d - _, (_ -= d) < w) {
                    w -= _;
                    do {
                      q[r++] = f[C++]
                    } while (--_);
                    if (C = 0, d < w) {
                      w -= _ = d;
                      do {
                        q[r++] = f[C++]
                      } while (--_);
                      C = r - k, S = q
                    }
                  }
                } else if (C += d - _, _ < w) {
                  w -= _;
                  do {
                    q[r++] = f[C++]
                  } while (--_);
                  C = r - k, S = q
                }
                for (; w > 2;) q[r++] = S[C++], q[r++] = S[C++], q[r++] = S[C++], w -= 3;
                w && (q[r++] = S[C++], w > 1 && (q[r++] = S[C++]))
              } else {
                C = r - k;
                do {
                  q[r++] = q[C++], q[r++] = q[C++], q[r++] = q[C++], w -= 3
                } while (w > 2);
                w && (q[r++] = q[C++], w > 1 && (q[r++] = q[C++]))
              }
              break
            }
          }
          break
        }
      } while (o < i && r < s);
      o -= w = p >> 3, h &= (1 << (p -= w << 3)) - 1, e.next_in = o, e.next_out = r, e.avail_in = o < i ? i - o + 5 : 5 - (o - i), e.avail_out = r < s ? s - r + 257 : 257 - (r - s), n.hold = h, n.bits = p
    },
    ra = 15,
    aa = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0],
    sa = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78],
    ua = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0],
    ca = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64],
    la = function (e, t, n, o, i, r, a, s) {
      var u, c, l, d, f, h, p, v, b, m = s.bits,
        g = 0,
        y = 0,
        _ = 0,
        w = 0,
        k = 0,
        C = 0,
        S = 0,
        R = 0,
        q = 0,
        I = 0,
        P = null,
        x = 0,
        z = new Ei.Buf16(16),
        E = new Ei.Buf16(16),
        O = null,
        T = 0;
      for (g = 0; g <= ra; g++) z[g] = 0;
      for (y = 0; y < o; y++) z[t[n + y]]++;
      for (k = m, w = ra; w >= 1 && 0 === z[w]; w--);
      if (k > w && (k = w), 0 === w) return i[r++] = 20971520, i[r++] = 20971520, s.bits = 1, 0;
      for (_ = 1; _ < w && 0 === z[_]; _++);
      for (k < _ && (k = _), R = 1, g = 1; g <= ra; g++)
        if (R <<= 1, (R -= z[g]) < 0) return -1;
      if (R > 0 && (0 === e || 1 !== w)) return -1;
      for (E[1] = 0, g = 1; g < ra; g++) E[g + 1] = E[g] + z[g];
      for (y = 0; y < o; y++) 0 !== t[n + y] && (a[E[t[n + y]]++] = y);
      if (0 === e ? (P = O = a, h = 19) : 1 === e ? (P = aa, x -= 257, O = sa, T -= 257, h = 256) : (P = ua, O = ca, h = -1), I = 0, y = 0, g = _, f = r, C = k, S = 0, l = -1, d = (q = 1 << k) - 1, 1 === e && q > 852 || 2 === e && q > 592) return 1;
      for (;;) {
        p = g - S, a[y] < h ? (v = 0, b = a[y]) : a[y] > h ? (v = O[T + a[y]], b = P[x + a[y]]) : (v = 96, b = 0), u = 1 << g - S, _ = c = 1 << C;
        do {
          i[f + (I >> S) + (c -= u)] = p << 24 | v << 16 | b | 0
        } while (0 !== c);
        for (u = 1 << g - 1; I & u;) u >>= 1;
        if (0 !== u ? (I &= u - 1, I += u) : I = 0, y++, 0 == --z[g]) {
          if (g === w) break;
          g = t[n + a[y]]
        }
        if (g > k && (I & d) !== l) {
          for (0 === S && (S = k), f += _, R = 1 << (C = g - S); C + S < w && !((R -= z[C + S]) <= 0);) C++, R <<= 1;
          if (q += 1 << C, 1 === e && q > 852 || 2 === e && q > 592) return 1;
          i[l = I & d] = k << 24 | C << 16 | f - r | 0
        }
      }
      return 0 !== I && (i[f + I] = g - S << 24 | 64 << 16 | 0), s.bits = k, 0
    },
    da = -2,
    fa = 12,
    ha = 30;

  function pa(e) {
    return (e >>> 24 & 255) + (e >>> 8 & 65280) + ((65280 & e) << 8) + ((255 & e) << 24)
  }

  function va() {
    this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new Ei.Buf16(320), this.work = new Ei.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0
  }

  function ba(e) {
    var t;
    return e && e.state ? (t = e.state, e.total_in = e.total_out = t.total = 0, e.msg = "", t.wrap && (e.adler = 1 & t.wrap), t.mode = 1, t.last = 0, t.havedict = 0, t.dmax = 32768, t.head = null, t.hold = 0, t.bits = 0, t.lencode = t.lendyn = new Ei.Buf32(852), t.distcode = t.distdyn = new Ei.Buf32(592), t.sane = 1, t.back = -1, 0) : da
  }

  function ma(e) {
    var t;
    return e && e.state ? ((t = e.state).wsize = 0, t.whave = 0, t.wnext = 0, ba(e)) : da
  }

  function ga(e, t) {
    var n, o;
    return e && e.state ? (o = e.state, t < 0 ? (n = 0, t = -t) : (n = 1 + (t >> 4), t < 48 && (t &= 15)), t && (t < 8 || t > 15) ? da : (null !== o.window && o.wbits !== t && (o.window = null), o.wrap = n, o.wbits = t, ma(e))) : da
  }

  function ya(e, t) {
    var n, o;
    return e ? (o = new va, e.state = o, o.window = null, 0 !== (n = ga(e, t)) && (e.state = null), n) : da
  }
  var _a, wa, ka = !0;

  function Ca(e) {
    if (ka) {
      var t;
      for (_a = new Ei.Buf32(512), wa = new Ei.Buf32(32), t = 0; t < 144;) e.lens[t++] = 8;
      for (; t < 256;) e.lens[t++] = 9;
      for (; t < 280;) e.lens[t++] = 7;
      for (; t < 288;) e.lens[t++] = 8;
      for (la(1, e.lens, 0, 288, _a, 0, e.work, {
          bits: 9
        }), t = 0; t < 32;) e.lens[t++] = 5;
      la(2, e.lens, 0, 32, wa, 0, e.work, {
        bits: 5
      }), ka = !1
    }
    e.lencode = _a, e.lenbits = 9, e.distcode = wa, e.distbits = 5
  }

  function Sa(e, t, n, o) {
    var i, r = e.state;
    return null === r.window && (r.wsize = 1 << r.wbits, r.wnext = 0, r.whave = 0, r.window = new Ei.Buf8(r.wsize)), o >= r.wsize ? (Ei.arraySet(r.window, t, n - r.wsize, r.wsize, 0), r.wnext = 0, r.whave = r.wsize) : ((i = r.wsize - r.wnext) > o && (i = o), Ei.arraySet(r.window, t, n - o, i, r.wnext), (o -= i) ? (Ei.arraySet(r.window, t, n - o, o, 0), r.wnext = o, r.whave = r.wsize) : (r.wnext += i, r.wnext === r.wsize && (r.wnext = 0), r.whave < r.wsize && (r.whave += i))), 0
  }
  var Ra = {
      inflateReset: ma,
      inflateReset2: ga,
      inflateResetKeep: ba,
      inflateInit: function (e) {
        return ya(e, 15)
      },
      inflateInit2: ya,
      inflate: function (e, t) {
        var n, o, i, r, a, s, u, c, l, d, f, h, p, v, b, m, g, y, _, w, k, C, S, R, q = 0,
          I = new Ei.Buf8(4),
          P = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
        if (!e || !e.state || !e.output || !e.input && 0 !== e.avail_in) return da;
        (n = e.state).mode === fa && (n.mode = 13), a = e.next_out, i = e.output, u = e.avail_out, r = e.next_in, o = e.input, s = e.avail_in, c = n.hold, l = n.bits, d = s, f = u, C = 0;
        e: for (;;) switch (n.mode) {
          case 1:
            if (0 === n.wrap) {
              n.mode = 13;
              break
            }
            for (; l < 16;) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            if (2 & n.wrap && 35615 === c) {
              n.check = 0, I[0] = 255 & c, I[1] = c >>> 8 & 255, n.check = gr(n.check, I, 2, 0), c = 0, l = 0, n.mode = 2;
              break
            }
            if (n.flags = 0, n.head && (n.head.done = !1), !(1 & n.wrap) || (((255 & c) << 8) + (c >> 8)) % 31) {
              e.msg = "incorrect header check", n.mode = ha;
              break
            }
            if (8 != (15 & c)) {
              e.msg = "unknown compression method", n.mode = ha;
              break
            }
            if (l -= 4, k = 8 + (15 & (c >>>= 4)), 0 === n.wbits) n.wbits = k;
            else if (k > n.wbits) {
              e.msg = "invalid window size", n.mode = ha;
              break
            }
            n.dmax = 1 << k, e.adler = n.check = 1, n.mode = 512 & c ? 10 : fa, c = 0, l = 0;
            break;
          case 2:
            for (; l < 16;) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            if (n.flags = c, 8 != (255 & n.flags)) {
              e.msg = "unknown compression method", n.mode = ha;
              break
            }
            if (57344 & n.flags) {
              e.msg = "unknown header flags set", n.mode = ha;
              break
            }
            n.head && (n.head.text = c >> 8 & 1), 512 & n.flags && (I[0] = 255 & c, I[1] = c >>> 8 & 255, n.check = gr(n.check, I, 2, 0)), c = 0, l = 0, n.mode = 3;
          case 3:
            for (; l < 32;) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            n.head && (n.head.time = c), 512 & n.flags && (I[0] = 255 & c, I[1] = c >>> 8 & 255, I[2] = c >>> 16 & 255, I[3] = c >>> 24 & 255, n.check = gr(n.check, I, 4, 0)), c = 0, l = 0, n.mode = 4;
          case 4:
            for (; l < 16;) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            n.head && (n.head.xflags = 255 & c, n.head.os = c >> 8), 512 & n.flags && (I[0] = 255 & c, I[1] = c >>> 8 & 255, n.check = gr(n.check, I, 2, 0)), c = 0, l = 0, n.mode = 5;
          case 5:
            if (1024 & n.flags) {
              for (; l < 16;) {
                if (0 === s) break e;
                s--, c += o[r++] << l, l += 8
              }
              n.length = c, n.head && (n.head.extra_len = c), 512 & n.flags && (I[0] = 255 & c, I[1] = c >>> 8 & 255, n.check = gr(n.check, I, 2, 0)), c = 0, l = 0
            } else n.head && (n.head.extra = null);
            n.mode = 6;
          case 6:
            if (1024 & n.flags && ((h = n.length) > s && (h = s), h && (n.head && (k = n.head.extra_len - n.length, n.head.extra || (n.head.extra = new Array(n.head.extra_len)), Ei.arraySet(n.head.extra, o, r, h, k)), 512 & n.flags && (n.check = gr(n.check, o, h, r)), s -= h, r += h, n.length -= h), n.length)) break e;
            n.length = 0, n.mode = 7;
          case 7:
            if (2048 & n.flags) {
              if (0 === s) break e;
              h = 0;
              do {
                k = o[r + h++], n.head && k && n.length < 65536 && (n.head.name += String.fromCharCode(k))
              } while (k && h < s);
              if (512 & n.flags && (n.check = gr(n.check, o, h, r)), s -= h, r += h, k) break e
            } else n.head && (n.head.name = null);
            n.length = 0, n.mode = 8;
          case 8:
            if (4096 & n.flags) {
              if (0 === s) break e;
              h = 0;
              do {
                k = o[r + h++], n.head && k && n.length < 65536 && (n.head.comment += String.fromCharCode(k))
              } while (k && h < s);
              if (512 & n.flags && (n.check = gr(n.check, o, h, r)), s -= h, r += h, k) break e
            } else n.head && (n.head.comment = null);
            n.mode = 9;
          case 9:
            if (512 & n.flags) {
              for (; l < 16;) {
                if (0 === s) break e;
                s--, c += o[r++] << l, l += 8
              }
              if (c !== (65535 & n.check)) {
                e.msg = "header crc mismatch", n.mode = ha;
                break
              }
              c = 0, l = 0
            }
            n.head && (n.head.hcrc = n.flags >> 9 & 1, n.head.done = !0), e.adler = n.check = 0, n.mode = fa;
            break;
          case 10:
            for (; l < 32;) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            e.adler = n.check = pa(c), c = 0, l = 0, n.mode = 11;
          case 11:
            if (0 === n.havedict) return e.next_out = a, e.avail_out = u, e.next_in = r, e.avail_in = s, n.hold = c, n.bits = l, 2;
            e.adler = n.check = 1, n.mode = fa;
          case fa:
            if (5 === t || 6 === t) break e;
          case 13:
            if (n.last) {
              c >>>= 7 & l, l -= 7 & l, n.mode = 27;
              break
            }
            for (; l < 3;) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            switch (n.last = 1 & c, l -= 1, 3 & (c >>>= 1)) {
              case 0:
                n.mode = 14;
                break;
              case 1:
                if (Ca(n), n.mode = 20, 6 === t) {
                  c >>>= 2, l -= 2;
                  break e
                }
                break;
              case 2:
                n.mode = 17;
                break;
              case 3:
                e.msg = "invalid block type", n.mode = ha
            }
            c >>>= 2, l -= 2;
            break;
          case 14:
            for (c >>>= 7 & l, l -= 7 & l; l < 32;) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            if ((65535 & c) != (c >>> 16 ^ 65535)) {
              e.msg = "invalid stored block lengths", n.mode = ha;
              break
            }
            if (n.length = 65535 & c, c = 0, l = 0, n.mode = 15, 6 === t) break e;
          case 15:
            n.mode = 16;
          case 16:
            if (h = n.length) {
              if (h > s && (h = s), h > u && (h = u), 0 === h) break e;
              Ei.arraySet(i, o, r, h, a), s -= h, r += h, u -= h, a += h, n.length -= h;
              break
            }
            n.mode = fa;
            break;
          case 17:
            for (; l < 14;) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            if (n.nlen = 257 + (31 & c), c >>>= 5, l -= 5, n.ndist = 1 + (31 & c), c >>>= 5, l -= 5, n.ncode = 4 + (15 & c), c >>>= 4, l -= 4, n.nlen > 286 || n.ndist > 30) {
              e.msg = "too many length or distance symbols", n.mode = ha;
              break
            }
            n.have = 0, n.mode = 18;
          case 18:
            for (; n.have < n.ncode;) {
              for (; l < 3;) {
                if (0 === s) break e;
                s--, c += o[r++] << l, l += 8
              }
              n.lens[P[n.have++]] = 7 & c, c >>>= 3, l -= 3
            }
            for (; n.have < 19;) n.lens[P[n.have++]] = 0;
            if (n.lencode = n.lendyn, n.lenbits = 7, S = {
                bits: n.lenbits
              }, C = la(0, n.lens, 0, 19, n.lencode, 0, n.work, S), n.lenbits = S.bits, C) {
              e.msg = "invalid code lengths set", n.mode = ha;
              break
            }
            n.have = 0, n.mode = 19;
          case 19:
            for (; n.have < n.nlen + n.ndist;) {
              for (; m = (q = n.lencode[c & (1 << n.lenbits) - 1]) >>> 16 & 255, g = 65535 & q, !((b = q >>> 24) <= l);) {
                if (0 === s) break e;
                s--, c += o[r++] << l, l += 8
              }
              if (g < 16) c >>>= b, l -= b, n.lens[n.have++] = g;
              else {
                if (16 === g) {
                  for (R = b + 2; l < R;) {
                    if (0 === s) break e;
                    s--, c += o[r++] << l, l += 8
                  }
                  if (c >>>= b, l -= b, 0 === n.have) {
                    e.msg = "invalid bit length repeat", n.mode = ha;
                    break
                  }
                  k = n.lens[n.have - 1], h = 3 + (3 & c), c >>>= 2, l -= 2
                } else if (17 === g) {
                  for (R = b + 3; l < R;) {
                    if (0 === s) break e;
                    s--, c += o[r++] << l, l += 8
                  }
                  l -= b, k = 0, h = 3 + (7 & (c >>>= b)), c >>>= 3, l -= 3
                } else {
                  for (R = b + 7; l < R;) {
                    if (0 === s) break e;
                    s--, c += o[r++] << l, l += 8
                  }
                  l -= b, k = 0, h = 11 + (127 & (c >>>= b)), c >>>= 7, l -= 7
                }
                if (n.have + h > n.nlen + n.ndist) {
                  e.msg = "invalid bit length repeat", n.mode = ha;
                  break
                }
                for (; h--;) n.lens[n.have++] = k
              }
            }
            if (n.mode === ha) break;
            if (0 === n.lens[256]) {
              e.msg = "invalid code -- missing end-of-block", n.mode = ha;
              break
            }
            if (n.lenbits = 9, S = {
                bits: n.lenbits
              }, C = la(1, n.lens, 0, n.nlen, n.lencode, 0, n.work, S), n.lenbits = S.bits, C) {
              e.msg = "invalid literal/lengths set", n.mode = ha;
              break
            }
            if (n.distbits = 6, n.distcode = n.distdyn, S = {
                bits: n.distbits
              }, C = la(2, n.lens, n.nlen, n.ndist, n.distcode, 0, n.work, S), n.distbits = S.bits, C) {
              e.msg = "invalid distances set", n.mode = ha;
              break
            }
            if (n.mode = 20, 6 === t) break e;
          case 20:
            n.mode = 21;
          case 21:
            if (s >= 6 && u >= 258) {
              e.next_out = a, e.avail_out = u, e.next_in = r, e.avail_in = s, n.hold = c, n.bits = l, ia(e, f), a = e.next_out, i = e.output, u = e.avail_out, r = e.next_in, o = e.input, s = e.avail_in, c = n.hold, l = n.bits, n.mode === fa && (n.back = -1);
              break
            }
            for (n.back = 0; m = (q = n.lencode[c & (1 << n.lenbits) - 1]) >>> 16 & 255, g = 65535 & q, !((b = q >>> 24) <= l);) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            if (m && 0 == (240 & m)) {
              for (y = b, _ = m, w = g; m = (q = n.lencode[w + ((c & (1 << y + _) - 1) >> y)]) >>> 16 & 255, g = 65535 & q, !(y + (b = q >>> 24) <= l);) {
                if (0 === s) break e;
                s--, c += o[r++] << l, l += 8
              }
              c >>>= y, l -= y, n.back += y
            }
            if (c >>>= b, l -= b, n.back += b, n.length = g, 0 === m) {
              n.mode = 26;
              break
            }
            if (32 & m) {
              n.back = -1, n.mode = fa;
              break
            }
            if (64 & m) {
              e.msg = "invalid literal/length code", n.mode = ha;
              break
            }
            n.extra = 15 & m, n.mode = 22;
          case 22:
            if (n.extra) {
              for (R = n.extra; l < R;) {
                if (0 === s) break e;
                s--, c += o[r++] << l, l += 8
              }
              n.length += c & (1 << n.extra) - 1, c >>>= n.extra, l -= n.extra, n.back += n.extra
            }
            n.was = n.length, n.mode = 23;
          case 23:
            for (; m = (q = n.distcode[c & (1 << n.distbits) - 1]) >>> 16 & 255, g = 65535 & q, !((b = q >>> 24) <= l);) {
              if (0 === s) break e;
              s--, c += o[r++] << l, l += 8
            }
            if (0 == (240 & m)) {
              for (y = b, _ = m, w = g; m = (q = n.distcode[w + ((c & (1 << y + _) - 1) >> y)]) >>> 16 & 255, g = 65535 & q, !(y + (b = q >>> 24) <= l);) {
                if (0 === s) break e;
                s--, c += o[r++] << l, l += 8
              }
              c >>>= y, l -= y, n.back += y
            }
            if (c >>>= b, l -= b, n.back += b, 64 & m) {
              e.msg = "invalid distance code", n.mode = ha;
              break
            }
            n.offset = g, n.extra = 15 & m, n.mode = 24;
          case 24:
            if (n.extra) {
              for (R = n.extra; l < R;) {
                if (0 === s) break e;
                s--, c += o[r++] << l, l += 8
              }
              n.offset += c & (1 << n.extra) - 1, c >>>= n.extra, l -= n.extra, n.back += n.extra
            }
            if (n.offset > n.dmax) {
              e.msg = "invalid distance too far back", n.mode = ha;
              break
            }
            n.mode = 25;
          case 25:
            if (0 === u) break e;
            if (h = f - u, n.offset > h) {
              if ((h = n.offset - h) > n.whave && n.sane) {
                e.msg = "invalid distance too far back", n.mode = ha;
                break
              }
              h > n.wnext ? (h -= n.wnext, p = n.wsize - h) : p = n.wnext - h, h > n.length && (h = n.length), v = n.window
            } else v = i, p = a - n.offset, h = n.length;
            h > u && (h = u), u -= h, n.length -= h;
            do {
              i[a++] = v[p++]
            } while (--h);
            0 === n.length && (n.mode = 21);
            break;
          case 26:
            if (0 === u) break e;
            i[a++] = n.length, u--, n.mode = 21;
            break;
          case 27:
            if (n.wrap) {
              for (; l < 32;) {
                if (0 === s) break e;
                s--, c |= o[r++] << l, l += 8
              }
              if (f -= u, e.total_out += f, n.total += f, f && (e.adler = n.check = n.flags ? gr(n.check, i, f, a - f) : vr(n.check, i, f, a - f)), f = u, (n.flags ? c : pa(c)) !== n.check) {
                e.msg = "incorrect data check", n.mode = ha;
                break
              }
              c = 0, l = 0
            }
            n.mode = 28;
          case 28:
            if (n.wrap && n.flags) {
              for (; l < 32;) {
                if (0 === s) break e;
                s--, c += o[r++] << l, l += 8
              }
              if (c !== (4294967295 & n.total)) {
                e.msg = "incorrect length check", n.mode = ha;
                break
              }
              c = 0, l = 0
            }
            n.mode = 29;
          case 29:
            C = 1;
            break e;
          case ha:
            C = -3;
            break e;
          case 31:
            return -4;
          case 32:
          default:
            return da
        }
        return e.next_out = a, e.avail_out = u, e.next_in = r, e.avail_in = s, n.hold = c, n.bits = l, (n.wsize || f !== e.avail_out && n.mode < ha && (n.mode < 27 || 4 !== t)) && Sa(e, e.output, e.next_out, f - e.avail_out), d -= e.avail_in, f -= e.avail_out, e.total_in += d, e.total_out += f, n.total += f, n.wrap && f && (e.adler = n.check = n.flags ? gr(n.check, i, f, e.next_out - f) : vr(n.check, i, f, e.next_out - f)), e.data_type = n.bits + (n.last ? 64 : 0) + (n.mode === fa ? 128 : 0) + (20 === n.mode || 15 === n.mode ? 256 : 0), (0 === d && 0 === f || 4 === t) && 0 === C && (C = -5), C
      },
      inflateEnd: function (e) {
        if (!e || !e.state) return da;
        var t = e.state;
        return t.window && (t.window = null), e.state = null, 0
      },
      inflateGetHeader: function (e, t) {
        var n;
        return e && e.state ? 0 == (2 & (n = e.state).wrap) ? da : (n.head = t, t.done = !1, 0) : da
      },
      inflateSetDictionary: function (e, t) {
        var n, o = t.length;
        return e && e.state ? 0 !== (n = e.state).wrap && 11 !== n.mode ? da : 11 === n.mode && vr(1, t, o, 0) !== n.check ? -3 : Sa(e, t, o, o) ? (n.mode = 31, -4) : (n.havedict = 1, 0) : da
      },
      inflateInfo: "pako inflate (from Nodeca project)"
    },
    qa = {
      Z_NO_FLUSH: 0,
      Z_PARTIAL_FLUSH: 1,
      Z_SYNC_FLUSH: 2,
      Z_FULL_FLUSH: 3,
      Z_FINISH: 4,
      Z_BLOCK: 5,
      Z_TREES: 6,
      Z_OK: 0,
      Z_STREAM_END: 1,
      Z_NEED_DICT: 2,
      Z_ERRNO: -1,
      Z_STREAM_ERROR: -2,
      Z_DATA_ERROR: -3,
      Z_BUF_ERROR: -5,
      Z_NO_COMPRESSION: 0,
      Z_BEST_SPEED: 1,
      Z_BEST_COMPRESSION: 9,
      Z_DEFAULT_COMPRESSION: -1,
      Z_FILTERED: 1,
      Z_HUFFMAN_ONLY: 2,
      Z_RLE: 3,
      Z_FIXED: 4,
      Z_DEFAULT_STRATEGY: 0,
      Z_BINARY: 0,
      Z_TEXT: 1,
      Z_UNKNOWN: 2,
      Z_DEFLATED: 8
    };
  var Ia = function () {
      this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1
    },
    Pa = Object.prototype.toString;

  function xa(e) {
    if (!(this instanceof xa)) return new xa(e);
    this.options = Ei.assign({
      chunkSize: 16384,
      windowBits: 0,
      to: ""
    }, e || {});
    var t = this.options;
    t.raw && t.windowBits >= 0 && t.windowBits < 16 && (t.windowBits = -t.windowBits, 0 === t.windowBits && (t.windowBits = -15)), !(t.windowBits >= 0 && t.windowBits < 16) || e && e.windowBits || (t.windowBits += 32), t.windowBits > 15 && t.windowBits < 48 && 0 == (15 & t.windowBits) && (t.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new Qr, this.strm.avail_out = 0;
    var n = Ra.inflateInit2(this.strm, t.windowBits);
    if (n !== qa.Z_OK) throw new Error(yr[n]);
    if (this.header = new Ia, Ra.inflateGetHeader(this.strm, this.header), t.dictionary && ("string" == typeof t.dictionary ? t.dictionary = Vr(t.dictionary) : "[object ArrayBuffer]" === Pa.call(t.dictionary) && (t.dictionary = new Uint8Array(t.dictionary)), t.raw && (n = Ra.inflateSetDictionary(this.strm, t.dictionary)) !== qa.Z_OK)) throw new Error(yr[n])
  }

  function za(e, t) {
    var n = new xa(t);
    if (n.push(e, !0), n.err) throw n.msg || yr[n.err];
    return n.result
  }
  xa.prototype.push = function (e, t) {
    var n, o, i, r, a, s = this.strm,
      u = this.options.chunkSize,
      c = this.options.dictionary,
      l = !1;
    if (this.ended) return !1;
    o = t === ~~t ? t : !0 === t ? qa.Z_FINISH : qa.Z_NO_FLUSH, "string" == typeof e ? s.input = Xr(e) : "[object ArrayBuffer]" === Pa.call(e) ? s.input = new Uint8Array(e) : s.input = e, s.next_in = 0, s.avail_in = s.input.length;
    do {
      if (0 === s.avail_out && (s.output = new Ei.Buf8(u), s.next_out = 0, s.avail_out = u), (n = Ra.inflate(s, qa.Z_NO_FLUSH)) === qa.Z_NEED_DICT && c && (n = Ra.inflateSetDictionary(this.strm, c)), n === qa.Z_BUF_ERROR && !0 === l && (n = qa.Z_OK, l = !1), n !== qa.Z_STREAM_END && n !== qa.Z_OK) return this.onEnd(n), this.ended = !0, !1;
      s.next_out && (0 !== s.avail_out && n !== qa.Z_STREAM_END && (0 !== s.avail_in || o !== qa.Z_FINISH && o !== qa.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i = $r(s.output, s.next_out), r = s.next_out - i, a = Yr(s.output, i), s.next_out = r, s.avail_out = u - r, r && Ei.arraySet(s.output, s.output, i, r, 0), this.onData(a)) : this.onData(Ei.shrinkBuf(s.output, s.next_out)))), 0 === s.avail_in && 0 === s.avail_out && (l = !0)
    } while ((s.avail_in > 0 || 0 === s.avail_out) && n !== qa.Z_STREAM_END);
    return n === qa.Z_STREAM_END && (o = qa.Z_FINISH), o === qa.Z_FINISH ? (n = Ra.inflateEnd(this.strm), this.onEnd(n), this.ended = !0, n === qa.Z_OK) : o !== qa.Z_SYNC_FLUSH || (this.onEnd(qa.Z_OK), s.avail_out = 0, !0)
  }, xa.prototype.onData = function (e) {
    this.chunks.push(e)
  }, xa.prototype.onEnd = function (e) {
    e === qa.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = Ei.flattenChunks(this.chunks)), this.chunks = [], this.err = e, this.msg = this.strm.msg
  };
  var Ea = {
      Inflate: xa,
      inflate: za,
      inflateRaw: function (e, t) {
        return (t = t || {}).raw = !0, za(e, t)
      },
      ungzip: za
    },
    Oa = {};
  (0, Ei.assign)(Oa, oa, Ea, qa);
  var Ta = Oa,
    Wa = function () {
      function e(n) {
        t(this, e), this.oOptions = Object.assign({
          iPort: -1,
          cbConnectSuccess: null,
          cbConnectError: null,
          cbConnectClose: null
        }, n), this.szHost = "http://127.0.0.1", this.szUUID = "", this.szVersion = "", this.bNormalClose = !1, this.bConnected = !1, this.bInitConnect = !0, this.iGetErrorCount = 0, this.oWindowControlCallback = {}, this.oSadpCallback = {}, this.oSliceCallback = {}, this.oSerialCallback = {}, this.oUIControlCallback = {}, this.oUpgradeCallback = {}, this.init()
      }
      return o(e, [{
        key: "init",
        value: function () {
          var e = this,
            t = Zo(),
            n = {
              sequence: t,
              cmd: "system.connect"
            },
            o = JSON.stringify(n);
          e.sendImageHttp("".concat(e.szHost, ":").concat(e.oOptions.iPort, "/imghttp/local"), o, t, {
            success: function (t) {
              var n = JSON.parse(t);
              e.szUUID = n.uuid, e.szVersion = n.version, e.bConnected = !0, e.bInitConnect = !1, setTimeout((function () {
                e.imageHttpPolling()
              }), 100), e.oOptions.cbConnectSuccess && e.oOptions.cbConnectSuccess()
            },
            error: function () {}
          })
        }
      }, {
        key: "sendImageHttp",
        value: function (e, t, n, o) {
          var i = this;
          o = Object.assign({
            success: null,
            error: null,
            abort: null
          }, o);
          var r = Ta.deflate(t);
          "" !== (new Uint8Array).toString() && (Si.isMacOS() || Si.browser().msie) && (r = Array.prototype.slice.call(r));
          for (var a = encodeURIComponent(btoa(r)), s = this.splitStr(a), u = [], c = "", l = 0, d = s.length; l < d; l++) c = l === d - 1 ? "update=".concat((new Date).getTime(), "&isLast=true&data=").concat(s[l], "&sequence=").concat(n) : "update=".concat((new Date).getTime(), "&isLast=false&data=").concat(s[l], "&sequence=").concat(n), u.push(c);
          u.length > 0 && function t() {
            i.imageHttp("".concat(e, "?").concat(u[0]), {
              success: function (e) {
                u.shift(), u.length > 0 ? (i.bInitConnect || i.bConnected) && t() : o.success && o.success(e)
              },
              error: function () {
                o.error && o.error()
              },
              abort: function () {
                o.abort && o.abort()
              }
            })
          }()
        }
      }, {
        key: "splitStr",
        value: function (e) {
          for (var t = this.getByteLen(e), n = [], o = 1500, i = 0, r = Math.ceil(t / o); i < r; i++) n[i] = e.slice(o * i, o * (i + 1));
          return n
        }
      }, {
        key: "getByteLen",
        value: function (e) {
          for (var t = 0, n = "", o = 0, i = e.length; o < i; o++) n = e.charAt(o), /[^\x00-\xff]/.test(n) ? t += 2 : t += 1;
          return t
        }
      }, {
        key: "imageHttp",
        value: function (e, t) {
          t = Object.assign({
            success: null,
            error: null,
            abort: null
          }, t);
          var n = new Image;
          n.onload = function () {
            if (t.success) {
              var e = document.createElement("canvas"),
                o = e.getContext("2d"),
                i = n.width,
                r = n.height;
              e.width = i, e.height = r;
              try {
                o.drawImage(n, 0, 0);
                for (var a = o.getImageData(0, 0, i, r).data, s = "", u = -1, c = r - 1; c >= 0; c--)
                  for (var l = 0; l < 4 * i && 0 !== a[u = c * i * 4 + l]; l++) 255 !== a[u] && (s += String.fromCharCode(a[u]));
                t.success(Si.utf8to16(s))
              } catch (e) {
                t.error && t.error()
              }
            }
          }, n.onerror = function () {
            t.error && t.error()
          }, n.onabort = function () {
            t.abort && t.abort()
          }, n.crossOrigin = "anonymous", n.src = e
        }
      }, {
        key: "setWindowControlCallback",
        value: function (e) {
          this.oWindowControlCallback = e
        }
      }, {
        key: "setSadpCallback",
        value: function (e) {
          this.oSadpCallback = e
        }
      }, {
        key: "setSliceCallback",
        value: function (e) {
          this.oSliceCallback = e
        }
      }, {
        key: "setSerialCallback",
        value: function (e) {
          this.oSerialCallback = e
        }
      }, {
        key: "setUIControlCallback",
        value: function (e) {
          this.oUIControlCallback = e
        }
      }, {
        key: "setUpgradeCallback",
        value: function (e) {
          this.oUpgradeCallback = e
        }
      }, {
        key: "getServiceVersion",
        value: function () {
          return this.szVersion
        }
      }, {
        key: "getRequestUUID",
        value: function () {
          return this.szUUID
        }
      }, {
        key: "disconnect",
        value: function () {
          var e = this,
            t = Zo(),
            n = {
              sequence: t,
              uuid: e.szUUID,
              cmd: "system.disconnect"
            },
            o = JSON.stringify(n);
          e.bConnected && e.sendImageHttp("".concat(e.szHost, ":").concat(e.oOptions.iPort, "/imghttp/local"), o, t, {
            success: function () {
              e.bNormalClose = !0, e.bConnected = !1, e.oOptions.cbConnectClose && e.oOptions.cbConnectClose(e.bNormalClose)
            },
            error: function () {
              e.bConnected = !1
            }
          })
        }
      }, {
        key: "imageHttpPolling",
        value: function () {
          var e = this,
            t = Zo(),
            n = {
              sequence: t,
              uuid: e.szUUID,
              cmd: "system.get"
            },
            o = JSON.stringify(n);
          e.bConnected && e.sendImageHttp("".concat(e.szHost, ":").concat(e.oOptions.iPort, "/imghttp/local"), o, t, {
            success: function (t) {
              if (e.iGetErrorCount = 0, "timeout" === t) setTimeout((function () {
                e.imageHttpPolling()
              }), 100);
              else if ("invalid" === t) e.bConnected = !1, e.oOptions.cbConnectError && e.oOptions.cbConnectError();
              else if ("closed" === t) console.log("connected is disconnected");
              else {
                var n = JSON.parse(t);
                void 0 !== n.cmd ? e.parseCmd(n) : console.log("[jsWebControl]imgHttpPolling push message error:".concat(t)), setTimeout((function () {
                  e.imageHttpPolling()
                }), 100)
              }
            },
            error: function () {
              5 === e.iGetErrorCount ? (console.log("[jsWebControl]imageHttpPolling get polling finished"), e.bNormalClose = !1, e.bConnected = !1, e.oOptions.cbConnectClose && e.oOptions.cbConnectClose(e.bNormalClose)) : setTimeout((function () {
                console.log("[jsWebControl]imgHttpPolling get polling failed"), e.iGetErrorCount++, e.imageHttpPolling()
              }), 100)
            }
          })
        }
      }, {
        key: "sendRequest",
        value: function (e) {
          var t = this;
          return new Promise((function (n, o) {
            var i = e.cmd.split("."),
              r = "";
            i.length > 1 ? r = "laputa" === i[0] ? "laputa" : "local" : o();
            var a = Zo();
            e.sequence = a, e.uuid = t.szUUID, e.timestamp = "".concat((new Date).getTime());
            var s = JSON.stringify(e);
            t.bConnected ? t.sendImageHttp("".concat(t.szHost, ":").concat(t.oOptions.iPort, "/imghttp/").concat(r), s, a, {
              success: function (e) {
                var t = JSON.parse(e);
                0 === t.errorModule && 0 === t.errorCode ? n(t) : o(t)
              },
              error: function () {
                o()
              }
            }) : o()
          }))
        }
      }, {
        key: "parseCmd",
        value: function (e) {
          var t = e.cmd.split("."),
            n = t[1].replace(/^[a-z]{1}/g, (function (e) {
              return e.toUpperCase()
            }));
          "window" === t[0] || "play" === t[0] ? this.oWindowControlCallback["cb".concat(n)] && this.oWindowControlCallback["cb".concat(n)](e) : "sadp" === t[0] ? this.oSadpCallback["cb".concat(n)] && this.oSadpCallback["cb".concat(n)](e) : "serial" === t[0] ? this.oSerialCallback["cb".concat(n)] && this.oSerialCallback["cb".concat(n)](e) : "slice" === t[0] ? this.oSliceCallback["cb".concat(n)] && this.oSliceCallback["cb".concat(n)](e) : "ui" === t[0] ? this.oUIControlCallback["cb".concat(n)] && this.oUIControlCallback["cb".concat(n)](e) : "upgrade" === t[0] && this.oUpgradeCallback["cb".concat(n)] && this.oUpgradeCallback["cb".concat(n)](e)
        }
      }]), e
    }(),
    Da = function () {
      function e(n) {
        t(this, e), this.oOptions = Object.assign({
          szPluginContainer: "",
          iPort: -1,
          cbConnectSuccess: null,
          cbConnectError: null,
          cbConnectClose: null,
          szClassId: ""
        }, n), this.oPlugin = null, this.szPluginId = "", this.szUUID = "", this.szVersion = "", this.oRequestList = {}, this.bNormalClose = !1, this.aMessage = [], this.oWindowControlCallback = {}, this.oSadpCallback = {}, this.oSliceCallback = {}, this.oSerialCallback = {}, this.oUIControlCallback = {}, this.oUpgradeCallback = {}, this.init()
      }
      return o(e, [{
        key: "init",
        value: function () {
          var e = this;
          e.initPlugin(), e.oPlugin.object && e.oPlugin.createSocket("ws://127.0.0.1:".concat(e.oOptions.iPort))
        }
      }, {
        key: "initPlugin",
        value: function () {
          var e = this;
          this.szPluginId = "webActiveX_".concat((new Date).getTime());
          var t = "<object id='".concat(this.szPluginId, "' classid='clsid:").concat(e.oOptions.szClassId, "' codebase='' standby='Waiting...' width='100%' height='100%' align='center' ></object>"),
            n = e.oOptions.szPluginContainer;
          if ("" === n) {
            n = "".concat(this.szPluginId, "_div");
            var o = document.createElement("div");
            o.id = n, document.body.parentNode.appendChild(o)
          }
          document.getElementById(n).innerHTML = t, e.oPlugin = document.getElementById(this.szPluginId), window.onConnectMessage = function (t, n) {
            n ? (e.aMessage.push(t), e.onConnectMessage(e.aMessage.join("")), e.aMessage.length = 0) : e.aMessage.push(t)
          }, window.onConnectClose = function () {
            e.onConnectClose()
          }, window.onConnectError = function () {
            e.onConnectError()
          }, window.onConnectCloseException = function () {
            e.onConnectCloseException()
          }, window.onConnectOpen = function () {
            e.onConnectOpen()
          }, Si.createEventScript(this.szPluginId, "onConnectMessage(szData, bLast)", "onConnectMessage(szData, bLast);"), Si.createEventScript(this.szPluginId, "onConnectClose()", "onConnectClose();"), Si.createEventScript(this.szPluginId, "onConnectError()", "onConnectError();"), Si.createEventScript(this.szPluginId, "onConnectCloseException()", "onConnectCloseException();"), Si.createEventScript(this.szPluginId, "onConnectOpen()", "onConnectOpen();")
        }
      }, {
        key: "onConnectMessage",
        value: function (e) {
          var t = this;
          if (e) {
            var n = JSON.parse(e),
              o = n.sequence;
            void 0 === o && void 0 === n.cmd ? (t.szUUID = n.uuid, t.szVersion = n.version, t.oOptions.cbConnectSuccess && t.oOptions.cbConnectSuccess()) : void 0 !== n.cmd ? t.parseCmd(n) : void 0 !== t.oRequestList[o] && (0 === n.errorModule && 0 === n.errorCode ? t.oRequestList[o].resolve(n) : t.oRequestList[o].reject(n), delete t.oRequestList[o])
          }
        }
      }, {
        key: "onConnectClose",
        value: function () {
          if (this.oPlugin = null, "" !== this.szPluginId) {
            var e = document.getElementById(this.szPluginId);
            e.parentNode.removeChild(e);
            var t = document.getElementById("".concat(this.szPluginId, "_div"));
            null !== t && t.parentNode.removeChild(t)
          }
          this.oOptions.cbConnectClose && this.oOptions.cbConnectClose(this.bNormalClose)
        }
      }, {
        key: "onConnectCloseException",
        value: function () {
          var e = this;
          setTimeout((function () {
            e.oPlugin.object && e.oPlugin.closeSocket()
          }), 1e3)
        }
      }, {
        key: "onConnectOpen",
        value: function () {
          var e = {
              sequence: Zo(),
              cmd: "system.connect"
            },
            t = JSON.stringify(e);
          this.oPlugin.object && this.oPlugin.sendRequest(t)
        }
      }, {
        key: "onConnectError",
        value: function () {}
      }, {
        key: "setWindowControlCallback",
        value: function (e) {
          this.oWindowControlCallback = e
        }
      }, {
        key: "setSadpCallback",
        value: function (e) {
          this.oSadpCallback = e
        }
      }, {
        key: "setSliceCallback",
        value: function (e) {
          this.oSliceCallback = e
        }
      }, {
        key: "setSerialCallback",
        value: function (e) {
          this.oSerialCallback = e
        }
      }, {
        key: "setUIControlCallback",
        value: function (e) {
          this.oUIControlCallback = e
        }
      }, {
        key: "setUpgradeCallback",
        value: function (e) {
          this.oUpgradeCallback = e
        }
      }, {
        key: "getServiceVersion",
        value: function () {
          return this.szVersion
        }
      }, {
        key: "getRequestUUID",
        value: function () {
          return this.szUUID
        }
      }, {
        key: "disconnect",
        value: function () {
          this.bNormalClose = !0, this.oPlugin && this.oPlugin.object && this.oPlugin.closeSocket()
        }
      }, {
        key: "sendRequest",
        value: function (e) {
          console.log(e)
          var t = this;
          return "window.hideWnd" === e.cmd ? t.oPlugin && t.oPlugin.object && (t.oPlugin.style.visibility = "hidden") : "window.showWnd" === e.cmd && t.oPlugin && t.oPlugin.object && (t.oPlugin.style.visibility = "visible"), new Promise((function (n, o) {
            var i = Zo();
            e.sequence = i, t.oRequestList[i] = {
              resolve: n,
              reject: o
            }, e.uuid = t.szUUID, e.timestamp = "".concat((new Date).getTime());
            var r = JSON.stringify(e);
            t.oPlugin && t.oPlugin.object ? t.oPlugin.sendRequest(r) : o()
          }))
        }
      }, {
        key: "parseCmd",
        value: function (e) {
          var t = e.cmd.split("."),
            n = t[1].replace(/^[a-z]{1}/g, (function (e) {
              return e.toUpperCase()
            }));
          "window" === t[0] || "play" === t[0] ? this.oWindowControlCallback["cb".concat(n)] && this.oWindowControlCallback["cb".concat(n)](e) : "sadp" === t[0] ? this.oSadpCallback["cb".concat(n)] && this.oSadpCallback["cb".concat(n)](e) : "serial" === t[0] ? this.oSerialCallback["cb".concat(n)] && this.oSerialCallback["cb".concat(n)](e) : "slice" === t[0] ? this.oSliceCallback["cb".concat(n)] && this.oSliceCallback["cb".concat(n)](e) : "ui" === t[0] ? this.oUIControlCallback["cb".concat(n)] && this.oUIControlCallback["cb".concat(n)](e) : "upgrade" === t[0] && this.oUpgradeCallback["cb".concat(n)] && this.oUpgradeCallback["cb".concat(n)](e)
        }
      }]), e
    }(),
    Aa = function () {
      function e(n) {
        t(this, e), this.oOptions = Object.assign({
          szPluginContainer: "",
          cbConnectSuccess: null,
          cbConnectError: null,
          cbConnectClose: null,
          iServicePortStart: -1,
          iServicePortEnd: -1,
          szClassId: ""
        }, n), this.iPort = -1, this.oRequest = null, this.bInit = !1, this.oCallbacks = {}, this.init()
      }
      return o(e, [{
        key: "init",
        value: function () {
          var e = this;
          Si.detectPort(e.oOptions.iServicePortStart, e.oOptions.iServicePortEnd, {
            success: function (t) {
              if (e.iPort = t, Si.browser().msie) "11.0" === Si.browser().version ? "https:" === window.location.protocol ? e.oRequest = new Wa({
                iPort: e.iPort,
                cbConnectSuccess: e.oOptions.cbConnectSuccess,
                cbConnectError: e.oOptions.cbConnectError,
                cbConnectClose: e.oOptions.cbConnectClose
              }) : e.oRequest = new zi({
                iPort: e.iPort,
                cbConnectSuccess: e.oOptions.cbConnectSuccess,
                cbConnectError: e.oOptions.cbConnectError,
                cbConnectClose: e.oOptions.cbConnectClose
              }) : e.oRequest = new Da({
                szPluginContainer: e.oOptions.szPluginContainer,
                iPort: e.iPort,
                cbConnectSuccess: e.oOptions.cbConnectSuccess,
                cbConnectError: e.oOptions.cbConnectError,
                cbConnectClose: e.oOptions.cbConnectClose,
                szClassId: e.oOptions.szClassId
              });
              else if ("https:" === window.location.protocol)
                if (Si.browser().chrome) try {
                  e.oRequest = new zi({
                    iPort: e.iPort,
                    cbConnectSuccess: e.oOptions.cbConnectSuccess,
                    cbConnectError: e.oOptions.cbConnectError,
                    cbConnectClose: e.oOptions.cbConnectClose
                  })
                } catch (t) {
                  e.oRequest = new Wa({
                    iPort: e.iPort,
                    cbConnectSuccess: e.oOptions.cbConnectSuccess,
                    cbConnectError: e.oOptions.cbConnectError,
                    cbConnectClose: e.oOptions.cbConnectClose
                  })
                } else e.oRequest = new Wa({
                  iPort: e.iPort,
                  cbConnectSuccess: e.oOptions.cbConnectSuccess,
                  cbConnectError: e.oOptions.cbConnectError,
                  cbConnectClose: e.oOptions.cbConnectClose
                });
                else "WebSocket" in window && (e.oRequest = new zi({
                  iPort: e.iPort,
                  cbConnectSuccess: e.oOptions.cbConnectSuccess,
                  cbConnectError: e.oOptions.cbConnectError,
                  cbConnectClose: e.oOptions.cbConnectClose
                }));
              for (var n in e.bInit = !0, e.oCallbacks) e.oRequest[n](e.oCallbacks[n])
            },
            error: function () {
              e.oOptions.cbConnectError && e.oOptions.cbConnectError()
            }
          })
        }
      }, {
        key: "setWindowControlCallback",
        value: function (e) {
          this.bInit ? this.oRequest.setWindowControlCallback(e) : this.oCallbacks.setWindowControlCallback = e
        }
      }, {
        key: "setSadpCallback",
        value: function (e) {
          this.bInit ? this.oRequest.setSadpCallback(e) : this.oCallbacks.setSadpCallback = e
        }
      }, {
        key: "setSliceCallback",
        value: function (e) {
          this.bInit ? this.oRequest.setSliceCallback(e) : this.oCallbacks.setSliceCallback = e
        }
      }, {
        key: "setSerialCallback",
        value: function (e) {
          this.bInit ? this.oRequest.setSerialCallback(e) : this.oCallbacks.setSerialCallback = e
        }
      }, {
        key: "setUIControlCallback",
        value: function (e) {
          this.bInit ? this.oRequest.setUIControlCallback(e) : this.oCallbacks.setUIControlCallback = e
        }
      }, {
        key: "setUpgradeCallback",
        value: function (e) {
          this.bInit ? this.oRequest.setUpgradeCallback(e) : this.oCallbacks.setUpgradeCallback = e
        }
      }, {
        key: "getServiceVersion",
        value: function () {
          return this.oRequest.getServiceVersion()
        }
      }, {
        key: "getRequestUUID",
        value: function () {
          return this.oRequest.getRequestUUID()
        }
      }, {
        key: "startService",
        value: function (e, t) {
          var n = {
            cmd: "system.startService",
            type: e
          };
          return void 0 !== t && (n.options = t), this.oRequest.sendRequest(n)
        }
      }, {
        key: "stopService",
        value: function (e) {
          var t = this;
          return new Promise((function (n, o) {
            null !== t.oRequest ? t.oRequest.sendRequest({
              cmd: "system.stopService",
              type: e
            }).then((function (e) {
              n(e)
            }), (function (e) {
              o(e)
            })) : o()
          }))
        }
      }, {
        key: "disconnect",
        value: function () {
          var e = this;
          return new Promise((function (t, n) {
            null !== e.oRequest ? (e.oRequest.disconnect(), t("cbConnectClose callback is really success")) : n()
          }))
        }
      }, {
        key: "openDirectory",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "system.openDirectory",
            path: e
          })
        }
      }, {
        key: "openFile",
        value: function (e, t, n) {
          return this.oRequest.sendRequest({
            cmd: "system.openFile",
            path: e,
            relative: t,
            version: n
          })
        }
      }, {
        key: "selectDirectory",
        value: function (e, t) {
          var n = this;
          return new Promise((function (o, i) {
            null !== n.oRequest ? n.oRequest.sendRequest({
              cmd: "system.selectDirectory",
              caption: void 0 !== e && "" !== e ? Si.Base64().encode(e) : "",
              dir: void 0 !== t && "" !== t ? Si.Base64().encode(t) : ""
            }).then((function (e) {
              "" !== e.path && (e.path = Si.Base64().decode(e.path)), o(e)
            }), (function (e) {
              i(e)
            })) : i()
          }))
        }
      }, {
        key: "selectFile",
        value: function (e, t, n) {
          var o = this;
          return new Promise((function (i, r) {
            null !== o.oRequest ? o.oRequest.sendRequest({
              cmd: "system.selectFile",
              caption: "" !== e ? Si.Base64().encode(e) : "",
              dir: "" !== t ? Si.Base64().encode(t) : "",
              filter: n
            }).then((function (e) {
              "" !== e.path && (e.path = Si.Base64().decode(e.path)), i(e)
            }), (function (e) {
              r(e)
            })) : r()
          }))
        }
      }, {
        key: "getLocalConfig",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "system.getLocalConfig",
            default: e
          })
        }
      }, {
        key: "setLocalConfig",
        value: function (e) {
          return e.cmd = "system.setLocalConfig", this.oRequest.sendRequest(e)
        }
      }, {
        key: "createWnd",
        value: function (e, t, n, o, i, r, a) {
          return this.oRequest.sendRequest({
            cmd: "window.createWnd",
            rect: {
              left: e,
              top: t,
              width: n,
              height: o
            },
            className: i,
            embed: r,
            activeXParentWnd: a
          })
        }
      }, {
        key: "showWnd",
        value: function () {
          console.log(this);
          return this.oRequest.sendRequest({
            cmd: "window.showWnd"
          })
        }
      }, {
        key: "hideWnd",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "window.hideWnd"
          })
        }
      }, {
        key: "destroyWnd",
        value: function () {
          var e = this;
          return new Promise((function (t, n) {
            null !== e.oRequest ? e.oRequest.sendRequest({
              cmd: "window.destroyWnd"
            }).then((function (e) {
              t(e)
            }), (function (e) {
              n(e)
            })) : n()
          }))
        }
      }, {
        key: "setWndGeometry",
        value: function (e, t, n, o) {
          return this.oRequest.sendRequest({
            cmd: "window.setWndGeometry",
            rect: {
              left: e,
              top: t,
              width: n,
              height: o
            }
          })
        }
      }, {
        key: "setWndCover",
        value: function (e, t) {
          var n = this;
          return new Promise((function (o, i) {
            null !== n.oRequest ? n.oRequest.sendRequest({
              cmd: "window.setWndCover",
              position: e,
              size: t
            }).then((function (e) {
              o(e)
            }), (function (e) {
              i(e)
            })) : i()
          }))
        }
      }, {
        key: "cuttingPartWindow",
        value: function (e, t, n, o, i) {
          var r = this;
          return new Promise((function (a, s) {
            null !== r.oRequest ? r.oRequest.sendRequest({
              cmd: "window.cuttingPartWindow",
              rect: {
                left: e,
                top: t,
                width: n,
                height: o
              },
              round: i
            }).then((function (e) {
              a(e)
            }), (function (e) {
              s(e)
            })) : s()
          }))
        }
      }, {
        key: "repairPartWindow",
        value: function (e, t, n, o, i) {
          var r = this;
          return new Promise((function (a, s) {
            null !== r.oRequest ? r.oRequest.sendRequest({
              cmd: "window.repairPartWindow",
              rect: {
                left: e,
                top: t,
                width: n,
                height: o
              },
              round: i
            }).then((function (e) {
              a(e)
            }), (function (e) {
              s(e)
            })) : s()
          }))
        }
      }, {
        key: "setWndZOrder",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "window.setWndZOrder",
            flag: e
          })
        }
      }, {
        key: "changePlayMode",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "window.changePlayMode",
            type: e
          })
        }
      }, {
        key: "setLanguageType",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "window.setLanguageType",
            type: e
          })
        }
      }, {
        key: "initLoginInfo",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "window.initLoginInfo",
            vsmAddress: e.vsmAddress,
            vsmPort: e.vsmPort,
            sessionID: e.sessionID,
            loginModel: e.loginModel,
            userType: e.userType,
            networkType: e.networkType
          })
        }
      }, {
        key: "setTranslateFile",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "window.setTranslateFile",
            url: e
          })
        }
      }, {
        key: "switchToSimple",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "window.switchToSimple",
            simple: e
          })
        }
      }, {
        key: "setVsmToken",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "play.setVsmToken",
            token: e
          })
        }
      }, {
        key: "startPlay",
        value: function (e, t, n, o, i, r, a, s, u) {
          var c = {
            cmd: "play.startPlay",
            url: e,
            username: t,
            password: n,
            siteID: o,
            areaName: Si.Base64().encode(i),
            cameraName: Si.Base64().encode(r),
            permission: a,
            wndIndex: s
          };
          return void 0 !== u && (c.options = u, void 0 !== c.options.siteName && (c.options.siteName = Si.Base64().encode(c.options.siteName))), this.oRequest.sendRequest(c)
        }
      }, {
        key: "setPreview3DPosition",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "play.setPreview3DPosition",
            open: e
          })
        }
      }, {
        key: "stopTotal",
        value: function () {
          var e = this;
          return new Promise((function (t, n) {
            null !== e.oRequest ? e.oRequest.sendRequest({
              cmd: "play.stopTotal"
            }).then((function (e) {
              t(e)
            }), (function (e) {
              n(e)
            })) : n()
          }))
        }
      }, {
        key: "setDragMode",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "play.setDragMode",
            drag: e
          })
        }
      }, {
        key: "showErrorInfoInFullScreen",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "play.showErrorInfoInFullScreen",
            error: Si.Base64().encode(e)
          })
        }
      }, {
        key: "setNumberOfWindows",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "play.setNumberOfWindows",
            number: e
          })
        }
      }, {
        key: "initCardReader",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSInitCardReader",
            param: e
          })
        }
      }, {
        key: "unInitCardReader",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSUnInitCardReader"
          })
        }
      }, {
        key: "startAutoMode",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSStartAutoMode"
          })
        }
      }, {
        key: "stopAutoMode",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSStopAutoMode"
          })
        }
      }, {
        key: "initFingerprint",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSInitFingerprint",
            param: e
          })
        }
      }, {
        key: "unInitFingerprint",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSUnInitFingerprint"
          })
        }
      }, {
        key: "startCollectFingerprint",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSStartCollectFingerprint"
          })
        }
      }, {
        key: "stopCollectFingerprint",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSStopCollectFingerprint"
          })
        }
      }, {
        key: "isCollectingFingerprint",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSIsCollectingFingerprint"
          })
        }
      }, {
        key: "initVideocapture",
        value: function (e) {
          return e.majorTitle = Si.Base64().encode(e.majorTitle), e.tip = Si.Base64().encode(e.tip), e.captureBtnTxt = Si.Base64().encode(e.captureBtnTxt), e.USBRemovedTip = Si.Base64().encode(e.USBRemovedTip), this.oRequest.sendRequest({
            cmd: "serial.ACSStartCollectImage",
            param: e
          })
        }
      }, {
        key: "unInitVideocapture",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "serial.ACSStopCollectImage"
          })
        }
      }, {
        key: "registerDeviceType",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "sadp.registDeviceType",
            deviceType: e
          })
        }
      }, {
        key: "activeOnlineDevice",
        value: function (e, t) {
          return this.oRequest.sendRequest({
            cmd: "sadp.activeDevice",
            serialNumber: e,
            password: t
          })
        }
      }, {
        key: "refreshDeviceList",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "sadp.refreshDeviceList"
          })
        }
      }, {
        key: "modifyDeviceNetParam",
        value: function (e, t, n, o, i, r, a) {
          return this.oRequest.sendRequest({
            cmd: "sadp.modifyDeviceParam",
            macAddress: e,
            password: t,
            ipv4Address: n,
            ipv4Gateway: o,
            ipv4SubnetMask: i,
            port: r,
            httpPort: a
          })
        }
      }, {
        key: "exportKeyFile",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "sadp.exportKeyFile",
            serialNumber: e
          })
        }
      }, {
        key: "importKeyFile",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "sadp.importKeyFile"
          })
        }
      }, {
        key: "resetPassword",
        value: function (e, t, n, o) {
          return this.oRequest.sendRequest({
            cmd: "sadp.resetPassword",
            serialNumber: e,
            password: t,
            importFileData: n,
            szCode: o
          })
        }
      }, {
        key: "uploadPicture",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "slice.uploadPicture",
            path: Si.Base64().encode(e)
          })
        }
      }, {
        key: "showSelectMenu",
        value: function (e, t, n, o, i) {
          return this.oRequest.sendRequest({
            cmd: "ui.showSelectMenu",
            items: i,
            rect: {
              left: e,
              top: t,
              width: n,
              height: o
            }
          })
        }
      }, {
        key: "hideSelectMenu",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "ui.hideSelectMenu"
          })
        }
      }, {
        key: "destroySelectMenu",
        value: function () {
          var e = this;
          return new Promise((function (t, n) {
            null !== e.oRequest ? e.oRequest.sendRequest({
              cmd: "ui.destroySelectMenu"
            }).then((function (e) {
              t(e)
            }), (function (e) {
              n(e)
            })) : n()
          }))
        }
      }, {
        key: "deviceConfig",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "laputa.encodingDevice",
            param: e
          })
        }
      }, {
        key: "cloudStorageConfig",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "laputa.cloudStorage",
            param: e
          })
        }
      }, {
        key: "ezvizRemoteConfig",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "laputa.ezvizRemote",
            param: e
          })
        }
      }, {
        key: "showAlarmInfoInFullScreen",
        value: function (e, t, n) {
          return this.oRequest.sendRequest({
            cmd: "window.showAlarmInfoInFullScreen",
            alarmTitle: e,
            alarmMessage: t,
            alarmId: n
          })
        }
      }, {
        key: "updateParentWnd",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "window.updateParentWnd"
          })
        }
      }, {
        key: "restoreWnd",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "window.restoreWnd"
          })
        }
      }, {
        key: "setImmediatePlaybackTime",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "play.setImmediatePlaybackTime",
            specifyTime: e
          })
        }
      }, {
        key: "setDrawStatus",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "draw.setDrawStatus",
            enable: e
          })
        }
      }, {
        key: "clearRegion",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "draw.clearRegion"
          })
        }
      }, {
        key: "setDrawShapeInfo",
        value: function (e, t) {
          return this.oRequest.sendRequest({
            cmd: "draw.setDrawShapeInfo",
            drawType: e,
            drawInfo: t
          })
        }
      }, {
        key: "setGridInfo",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "draw.setGridInfo",
            gridInfo: e
          })
        }
      }, {
        key: "getGridInfo",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "draw.getGridInfo"
          })
        }
      }, {
        key: "setPolygonInfo",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "draw.setPolygonInfo",
            polygonInfo: e
          })
        }
      }, {
        key: "getPolygonInfo",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "draw.getPolygonInfo"
          })
        }
      }, {
        key: "setLineInfo",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "draw.setLineInfo",
            lineInfo: e
          })
        }
      }, {
        key: "getLineInfo",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "draw.getLineInfo"
          })
        }
      }, {
        key: "setRectInfo",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "draw.setRectInfo",
            rectInfo: e
          })
        }
      }, {
        key: "getRectInfo",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "draw.getRectInfo"
          })
        }
      }, {
        key: "clearShapeByType",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "draw.clearShapeByType",
            type: e
          })
        }
      }, {
        key: "sensitiveEncrypt",
        value: function (e, t, n) {
          var o = {
            cmd: "laputa.sensitiveEncrypt",
            encryptType: e,
            encryptField: t
          };
          return void 0 !== n && (o.options = n), this.oRequest.sendRequest(o)
        }
      }, {
        key: "sendRequest",
        value: function (e) {
          return this.oRequest.sendRequest(e)
        }
      }, {
        key: "requestInterface",
        value: function (e) {
          var t = {
            cmd: "window.requestInterface"
          };
          return t.requestParams = e, this.oRequest.sendRequest(t)
        }
      }, {
        key: "stopPlay",
        value: function (e) {
          return void 0 === e && (e = -1), this.oRequest.sendRequest({
            cmd: "play.stopPlay",
            wndIndex: e
          })
        }
      }, {
        key: "showRemoteConfig",
        value: function (e) {
          var t = this;
          return e.cmd = "config.showRemoteConfig", new Promise((function (n, o) {
            null !== t.oRequest ? t.oRequest.sendRequest(e).then((function (e) {
              n(e)
            }), (function (e) {
              o(e)
            })) : o()
          }))
        }
      }, {
        key: "video2Picture",
        value: function () {
          var e = {
            cmd: "window.video2Picture"
          };
          return this.oRequest.sendRequest(e)
        }
      }, {
        key: "picture2Video",
        value: function () {
          var e = {
            cmd: "window.picture2Video"
          };
          return this.oRequest.sendRequest(e)
        }
      }, {
        key: "ptzControl",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "laputa.ptzControl",
            param: e
          })
        }
      }, {
        key: "simMouseClickEvent",
        value: function (e, t) {
          return this.oRequest.sendRequest({
            cmd: "window.simMouseClickEvent",
            pointX: e,
            pointY: t
          })
        }
      }, {
        key: "us_SetMaxJobCount",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "upgrade.setMaxJobCount",
            xml: e
          })
        }
      }, {
        key: "us_GetMaxJobCount",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "upgrade.getMaxJobCount"
          })
        }
      }, {
        key: "us_AddSchedule",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "upgrade.addSchedule",
            xml: Si.Base64().encode(e)
          })
        }
      }, {
        key: "us_DelSchedule",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "upgrade.delSchedule",
            scheduleId: e
          })
        }
      }, {
        key: "us_GetScheduleList",
        value: function (e) {
          var t = this;
          return new Promise((function (n, o) {
            null !== t.oRequest ? t.oRequest.sendRequest({
              cmd: "upgrade.getScheduleList",
              xml: e
            }).then((function (e) {
              "" !== e.xml && (e.xml = Si.Base64().decode(e.xml)), n(e)
            }), (function (e) {
              o(e)
            })) : o()
          }))
        }
      }, {
        key: "us_GetSchedule",
        value: function (e, t) {
          var n = this;
          return new Promise((function (o, i) {
            null !== n.oRequest ? n.oRequest.sendRequest({
              cmd: "upgrade.getSchedule",
              xml: t,
              scheduleId: e
            }).then((function (e) {
              "" !== e.xml && (e.xml = Si.Base64().decode(e.xml)), o(e)
            }), (function (e) {
              i(e)
            })) : i()
          }))
        }
      }, {
        key: "us_UpgradeAction",
        value: function (e, t) {
          return this.oRequest.sendRequest({
            cmd: "upgrade.upgradeAction",
            xml: t,
            scheduleId: e
          })
        }
      }, {
        key: "us_CheckUpgradeableDevice",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "upgrade.checkUpgradeableDevice",
            param: e
          })
        }
      }, {
        key: "us_CheckUpgradeableDeviceList",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "upgrade.checkUpgradeableDeviceList",
            param: e
          })
        }
      }, {
        key: "us_IsRunningAsyCheckUpgradeable",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "upgrade.isRunningAsyCheckUpgradeable"
          })
        }
      }, {
        key: "us_StopAsyCheckUpgradeable",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "upgrade.stopAsyCheckUpgradeable"
          })
        }
      }, {
        key: "getFishEyePTZPreset",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "play.getFishEyePTZPreset",
            wndIndex: e
          })
        }
      }, {
        key: "setFishEyePTZPreset",
        value: function (e, t, n) {
          return this.oRequest.sendRequest({
            cmd: "play.setFishEyePTZPreset",
            wndIndex: e,
            command: t,
            presetInfo: n
          })
        }
      }, {
        key: "controlFishEyePTZ",
        value: function (e, t, n, o) {
          return this.oRequest.sendRequest({
            cmd: "play.controlFishEyePTZ",
            wndIndex: e,
            command: t,
            stop: n,
            speed: o
          })
        }
      }, {
        key: "controlFishEyeParol",
        value: function (e, t, n) {
          return this.oRequest.sendRequest({
            cmd: "play.controlFishEyeParol",
            wndIndex: e,
            command: t,
            cruisePointList: n
          })
        }
      }, {
        key: "setFirstDayOfWeek",
        value: function (e) {
          return this.oRequest.sendRequest({
            cmd: "window.setFirstDayOfWeek",
            firstDay: e
          })
        }
      }, {
        key: "setEhomePlayInfo",
        value: function (e, t, n, o, i, r) {
          return this.oRequest.sendRequest({
            cmd: "play.setEhomePlayInfo",
            guid: e,
            protocal: t,
            session: n,
            token: o,
            ip: i,
            port: r
          })
        }
      }, {
        key: "startPlayPatch",
        value: function (e) {
          if (e.length > 0)
            for (var t = 0, n = e.length; t < n; t++) e[t].areaName = Si.Base64().encode(e[t].areaName), e[t].cameraName = Si.Base64().encode(e[t].cameraName);
          return this.oRequest.sendRequest({
            cmd: "play.startPlayPatch",
            params: e
          })
        }
      }, {
        key: "grabOpen",
        value: function () {
          var e = this;
          return new Promise((function (t, n) {
            null !== e.oRequest ? e.oRequest.sendRequest({
              cmd: "window.grabOpen"
            }).then((function (e) {
              t(e)
            }), (function (e) {
              n(e)
            })) : n()
          }))
        }
      }, {
        key: "setWndAutoPanState",
        value: function (e, t) {
          return this.oRequest.sendRequest({
            cmd: "play.setWndAutoPanState",
            wndIndex: e,
            open: t
          })
        }
      }, {
        key: "enablePrivileges",
        value: function () {
          return this.oRequest.sendRequest({
            cmd: "system.enablePrivileges"
          })
        }
      }]), e
    }();
  return function () {
    function e(n) {
      t(this, e);
      var o = this;
      this.oOptions = Object.assign({
        szPluginContainer: "",
        cbConnectSuccess: null,
        cbConnectError: null,
        cbConnectClose: null,
        iServicePortStart: 16960,
        iServicePortEnd: 16969,
        szClassId: "55A7329E-FAAD-439a-87BC-75BAB3332E7C"
      }, n), this.bFreeze = !1, this.bFocus = !0, this.bEmbed = Si.getCreateWndMode(), this.szWndId = "", this.iCreateWndTimer = -1, this.iUpdateParentWndTimer = -1, this.bDevTool = !1, this.iVCTimeStart = -1, this.iVCTimeEnd = -1, this.oWndCover = {
        left: 0,
        top: 0,
        right: 0,
        bottom: 0
      }, this.oDocOffset = {
        left: 0,
        top: 0
      }, this.szTitle = "", this.oWindowAttr = {
        outerWidth: 0,
        innerWidth: 0,
        outerHeight: 0,
        innerHeight: 0,
        screenTop: 0,
        screenLeft: 0,
        screenX: 0,
        screenY: 0
      }, this.iFixedResizeTimer = -1, this.fVisibilityChange = function () {
        /*
          监听了 document.addEventListener("visibilitychange") 事件
          document是指显示播放器的容器

          这个事件在切换页签都会执行，判断document是否隐藏，来控制控件是否显示
          1.首先判断是否为苹果系统 
          2.判断当前窗口是否为隐藏，如果是记录开始时间戳并隐藏窗口，拖动标签出来会执行一次，document.hidden为true的情况，所以会先清除一次控件
          4.条件都不满足则先记录结束时间戳、
            判断是否为谷歌或火狐浏览器（可能只有这2种浏览器可以拖出标签，否则直接显示控件）、
            满足条件判断定时器是否存在，存在则清除定时器，重置值为-1，计算时间戳差小于100为拖动标签页面（短暂会执行2次事件）
            Pi方法是用自己生成的id覆盖页面标题，title属性，应该是方便控件找到浏览器窗口
            然后延时100毫秒执行，应该是容错处理，然后websocket发送了updateParentWnd信息，紧接着发送了showWnd信息，显示控件
        */
        if (Si.isMacOS()) document.hidden ? o.fHideWnd() : o.fShowWnd();
        else if (document.hidden) console.log('hidden'), o.iVCTimeStart = (new Date).getTime(), o.fHideWnd();
        else {
          o.iVCTimeEnd = (new Date).getTime();
          var e = Si.browser();
          if (e.chrome || e.mozilla)
            if (o.iUpdateParentWndTimer > 0 && (clearTimeout(o.iUpdateParentWndTimer), o.iUpdateParentWndTimer = -1), o.iVCTimeEnd - o.iVCTimeStart < 100) {
              console.log('满足条件')
              var t = o.oRequest.getRequestUUID();
              Pi(t), o.iUpdateParentWndTimer = setTimeout((function () {
                o.oRequest.updateParentWnd().then((function () {
                  xi(t), o.bFreeze || o.bDevTool || o.fShowWnd()
                }), (function () {
                  xi(t)
                }))
              }), 100)
            } else o.bFreeze || o.bDevTool || o.fShowWnd();
          else o.bFreeze || o.bDevTool || o.fShowWnd()
        }
      }, this.fHideWnd = function () {
        o.oRequest.hideWnd().then((function () {}), (function () {}))
      }, this.fShowWnd = function () {
        o.oRequest.showWnd().then((function () {}), (function () {}))
      }, this.fFocus = function () {
        console.log('document.focus')
        /* 
          页面获取焦点事件
          window.addEventListener("focus")
          removeGrabImage这个方法应该是他自己内部的一些逻辑，暂不考虑
          获取焦点时，如果document.hidden为false，显示控件
          o.bFreeze || o.bDevTool 这两个变量是内部控制的，暂不考虑
        */
        o.bFocus = !0, setTimeout((function () {
          o.removeGrabImage(), document.hidden || o.bFreeze || o.bDevTool || o.fShowWnd()
        }), 200)
      }, this.fBlur = function () {
        /*
          页面失去焦点事件，没做什么特殊处理，只是改变了变量的状态
          window.addEventListener("blur")
        */
        console.log('document.bFocus')
        o.bFocus = !1
      }, this.removeGrabImage = function () {
        if (!Si.isMacOS()) {
          var e = null;
          if ("" !== o.szWndId && (e = document.getElementById(o.szWndId))) {
            var t = e.querySelectorAll('[data-name="wc-grab-open-image"]');
            Array.prototype.slice.call(t).forEach((function (e) {
              e.parentNode.removeChild(e)
            }))
          }
        }
      }, this.oRequest = new Aa({
        szPluginContainer: this.oOptions.szPluginContainer,
        cbConnectSuccess: this.oOptions.cbConnectSuccess,
        cbConnectError: this.oOptions.cbConnectError,
        cbConnectClose: function (e) {
          o.iCreateWndTimer > 0 && (clearTimeout(o.iCreateWndTimer), o.iCreateWndTimer = -1), o.removeGrabImage(), o.oOptions.cbConnectClose && o.oOptions.cbConnectClose(e)
        },
        iServicePortStart: this.oOptions.iServicePortStart,
        iServicePortEnd: this.oOptions.iServicePortEnd,
        szClassId: this.oOptions.szClassId
      })
    }
    return o(e, [{
      key: "JS_SetWindowControlCallback",
      value: function (e) {
        var t = this,
          n = {
            cbSelectWnd: function (t) {
              e.cbSelectWnd && e.cbSelectWnd(parseInt(t.wndIndex, 10), t.cameraID, t.siteID, t.opendFisheye)
            },
            cbTogglePTZ: function (t) {
              e.cbTogglePTZ && e.cbTogglePTZ(t.cameraID, t.siteID)
            },
            cbUpdateCameraIcon: function (t) {
              e.cbUpdateCameraIcon && e.cbUpdateCameraIcon(t.cameraID, parseInt(t.playing, 10), t.siteID)
            },
            cbGetLastError: function (t) {
              e.cbGetLastError && e.cbGetLastError(t.error, parseInt(t.type, 10))
            },
            cbTalkUrlEmpty: function (t) {
              e.cbTalkUrlEmpty && e.cbTalkUrlEmpty(t.cameraID)
            },
            cbGotoPlayback: function (t) {
              e.cbGotoPlayback && e.cbGotoPlayback(t.cameraID, t.siteID)
            },
            cbShowDisplayInfo: function (t) {
              e.cbShowDisplayInfo && e.cbShowDisplayInfo(parseInt(t.videoWidth, 10), parseInt(t.videoHeight, 10), parseInt(t.frameRate, 10))
            },
            cbPreviewWnd3DPostion: function (t) {
              e.cbPreviewWnd3DPostion && e.cbPreviewWnd3DPostion(parseInt(t.startX, 10), parseInt(t.startY, 10), parseInt(t.endX, 10), parseInt(t.endY, 10))
            },
            cbStopPlayAll: function () {
              e.cbStopPlayAll && e.cbStopPlayAll()
            },
            cbWheelEvent: function (t) {
              e.cbWheelEvent && e.cbWheelEvent(parseInt(t.delta, 10))
            },
            cbAlarmDetail: function (t) {
              e.cbAlarmDetail && e.cbAlarmDetail(t.alarmId)
            },
            cbQuitedFullScreen: function () {
              setTimeout((function () {
                t.fShowWnd()
              }), 100)
            },
            cbManuallyClose: function (t) {
              e.cbManuallyClose && e.cbManuallyClose(t.cameraID, t.siteID, parseInt(t.wndIndex, 10))
            },
            cbIntegrationCallBack: function (t) {
              e.cbIntegrationCallBack && e.cbIntegrationCallBack(t)
            },
            cbChangeStorage: function (t) {
              e.cbChangeStorage && e.cbChangeStorage(parseInt(t.storageType, 10), t.cameraID, t.siteID)
            },
            cbFisheyeExpandChanged: function (t) {
              e.cbFisheyeExpandChanged && e.cbFisheyeExpandChanged(t.cameraID, t.siteID, parseInt(t.wndIndex, 10), t.open)
            },
            cbGetEhomePlayInfo: function (t) {
              e.cbGetEhomePlayInfo && e.cbGetEhomePlayInfo(t.siteID, t.guid)
            },
            cbWndPtzControl: function (t) {
              e.cbWndPtzControl && e.cbWndPtzControl(parseInt(t.wndIndex, 10), t.cameraID, t.command, t.speed, t.stop)
            },
            cbMessageCallBack: function (n) {
              n = n.data;
              console.log(n)
              var o = t.oRequest.getRequestUUID();
              "menuOpen" === n.type ? "" !== t.szWndId && (document.getElementById(t.szWndId).innerHTML = "<img data-name='wc-grab-open-image' src='data:image/png;base64,".concat(n.message.image, "' width='100%' height='100%' />")) : "changeTitle" === n.type ? -1 === document.title.indexOf(o) && (t.szTitle = document.title, Pi(o), setTimeout((function () {
                "updateParentWnd" === n.message ? t.oRequest.updateParentWnd() : "restoreWnd" === n.message && t.oRequest.restoreWnd()
              }), 300)) : "changeTitleDone" === n.type ? "" !== t.szTitle && xi(o) : "splitChange" === n.type ? e.cbSplitChange && e.cbSplitChange(n.message.splitType) : "showMaximized" === n.type && e.cbShowMaximized && e.cbShowMaximized(n.message.showMax)
            }
          };
        this.oRequest.setWindowControlCallback(n)
      }
    }, {
      key: "JS_SetSadpCallback",
      value: function (e) {
        var t = {
          cbDeviceFind: null
        };
        Object.assign(t, e), this.oRequest.setSadpCallback(t)
      }
    }, {
      key: "JS_SetSliceCallback",
      value: function (e) {
        var t = {
          cbImageSliced: function (t) {
            e.cbImageSliced && ("" !== t.picName && (t.picName = Si.Base64().decode(t.picName)), e.cbImageSliced(t))
          }
        };
        this.oRequest.setSliceCallback(t)
      }
    }, {
      key: "JS_SetSerialCallback",
      value: function (e) {
        var t = {
          cbCardFind: function (t) {
            e.cbCardFind && e.cbCardFind(t)
          },
          cbFingerFind: function (t) {
            e.cbFingerFind && e.cbFingerFind(t.fingerPrint, t.fingerQuality)
          },
          cbImageFind: function (t) {
            e.cbImageFind && e.cbImageFind(t.image)
          },
          cbImageErrorFind: function (t) {
            e.cbImageErrorFind && e.cbImageErrorFind(t.errorModule, t.errorCode)
          },
          cbImageWndVisibleFind: function (t) {
            e.cbImageWndVisibleFind && e.cbImageWndVisibleFind(t.visible)
          }
        };
        this.oRequest.setSerialCallback(t)
      }
    }, {
      key: "JS_SetUIControlCallback",
      value: function (e) {
        var t = {
          cbClickMenuItem: function (t) {
            e.cbClickMenuItem && e.cbClickMenuItem(t.itemIndex)
          },
          cbMenuMouseIn: function () {
            e.cbMenuMouseIn && e.cbMenuMouseIn()
          },
          cbMenuMouseOut: function () {
            e.cbMenuMouseOut && e.cbMenuMouseOut()
          }
        };
        this.oRequest.setUIControlCallback(t)
      }
    }, {
      key: "JS_SetUpgradeCallback",
      value: function (e) {
        var t = {
          cbCheckUpgrade: function (t) {
            e.cbCheckUpgrade && e.cbCheckUpgrade(t)
          }
        };
        this.oRequest.setUpgradeCallback(t)
      }
    }, {
      key: "JS_CheckVersion",
      value: function (e) {
        var t = this.oRequest.getServiceVersion(),
          n = [],
          o = [];
        "" !== t && (n = (t = t.replace(/,[\s]*/g, ".")).split(".")), "" !== e && (o = (e = e.replace(/,[\s]*/g, ".")).split("."));
        var i = !1;
        if (o.length === n.length)
          for (var r = 0, a = n.length; r < a; r++)
            if (parseInt(o[r], 10) !== parseInt(n[r], 10)) {
              if (parseInt(o[r], 10) > parseInt(n[r], 10)) {
                i = !0;
                break
              }
              break
            } return i
      }
    }, {
      key: "JS_StartService",
      value: function (e, t) {
        return this.oRequest.startService(e, t)
      }
    }, {
      key: "JS_StopService",
      value: function (e) {
        return this.oRequest.stopService(e)
      }
    }, {
      key: "JS_Disconnect",
      value: function () {
        return this.oRequest.disconnect()
      }
    }, {
      key: "JS_OpenDirectory",
      value: function (e) {
        return this.oRequest.openDirectory(e)
      }
    }, {
      key: "JS_OpenFile",
      value: function (e, t, n) {
        return this.oRequest.openFile(e, t, n)
      }
    }, {
      key: "JS_SelectDirectory",
      value: function (e, t) {
        return this.oRequest.selectDirectory(e, t)
      }
    }, {
      key: "JS_SelectFile",
      value: function (e, t, n) {
        return this.oRequest.selectFile(e, t, n)
      }
    }, {
      key: "JS_GetLocalConfig",
      value: function (e) {
        return this.oRequest.getLocalConfig(e)
      }
    }, {
      key: "JS_SetLocalConfig",
      value: function (e) {
        return this.oRequest.setLocalConfig(e)
      }
    }, {
      key: "JS_SetDocOffset",
      value: function (e) {
        return e && (this.oDocOffset = e), !0
      }
    }, {
      key: "JS_SetWindowAttr",
      value: function (e) {
        return e && (this.oWindowAttr = e), !0
      }
    }, {
      key: "JS_CreateWnd",
      value: function (e, t, n, o) {
        var i = this;
        this.szWndId = e, void 0 !== (o = o || {}).bEmbed && (this.bEmbed = o.bEmbed);
        var r = !0;
        return void 0 !== o.bActiveXParentWnd && (r = o.bActiveXParentWnd), new Promise((function (a, s) {
          var u = document.getElementById(e);
          console.log(u)
          if (u) {
            var c = "";
            Si.browser().msie ? c = "IEFrame" : Si.browser().chrome ? c = "Chrome" : Si.browser().safari && (c = window.top.document.title);
            var l = i.oRequest.getRequestUUID();
            Pi(l, o.cbSetDocTitle), i.iCreateWndTimer = setTimeout((function () {
              if (!i.bDevTool) {
                var e = Si.getDevicePixelRatio(),
                  o = Si.getWndPostion(u, i.bEmbed, i.oWindowAttr);
                o.left += Math.round(i.oDocOffset.left * e), o.top += Math.round(i.oDocOffset.top * e), t = Math.round(t * e), n = Math.round(n * e), i.oRequest.createWnd(o.left, o.top, t, n, c, i.bEmbed, r).then((function () {
                  xi(l), a()
                }), (function (e) {
                  xi(l), 5001 === e.errorCode ? (document.hidden || i.bFreeze || !i.bFocus || i.fShowWnd(), a()) : s(e)
                }))
              }
            }), 300), document.addEventListener("visibilitychange", i.fVisibilityChange, !1), window.addEventListener("focus", i.fFocus), window.addEventListener("blur", i.fBlur)
          } else s()
        }))
      }
    }, {
      key: "JS_ShowWnd",
      value: function () {
        this.bFreeze = !1, document.hidden || this.bDevTool || this.fShowWnd()
      }
    }, {
      key: "JS_HideWnd",
      value: function () {
        this.bFreeze = !0, this.fHideWnd()
      }
    }, {
      key: "JS_DestroyWnd",
      value: function () {
        return document.removeEventListener("visibilitychange", this.fVisibilityChange, !1), window.removeEventListener("focus", this.fFocus), window.removeEventListener("blur", this.fBlur), this.oRequest.destroyWnd()
      }
    }, {
      key: "JS_Resize",
      value: function (e, t, n) {
        var o = this,
          i = null,
          r = e,
          a = t;
        if ("" !== this.szWndId && (i = document.getElementById(this.szWndId)), i) {
          var s = Si.getWndPostion(i, this.bEmbed, this.oWindowAttr),
            u = Si.getDevicePixelRatio();
          s.left += Math.round(this.oDocOffset.left * u), s.top += Math.round(this.oDocOffset.top * u), (!Si.browser().msie || Si.browser().msie && "11.0" === Si.browser().version) && (this.oWndCover.left > 0 && (s.left += Math.round(this.oWndCover.left * u), e -= this.oWndCover.left), this.oWndCover.top > 0 && (s.top += Math.round(this.oWndCover.top * u), t -= this.oWndCover.top), this.oWndCover.right > 0 && (e -= this.oWndCover.right), this.oWndCover.bottom > 0 && (t -= this.oWndCover.bottom)), e = Math.round(e * u), t = Math.round(t * u), this.oRequest.setWndGeometry(s.left, s.top, e, t), (Si.browser().msie && "11.0" === Si.browser().version || !Si.isWindows()) && (n && n.bFixed ? this.iFixedResizeTimer = -1 : (this.iFixedResizeTimer > -1 && (clearTimeout(this.iFixedResizeTimer), this.iFixedResizeTimer = -1), this.iFixedResizeTimer = setTimeout((function () {
            o.JS_Resize(r, a, {
              bFixed: !0
            })
          }), 300)))
        }
      }
    }, {
      key: "JS_SetWndCover",
      value: function (e, t) {
        var n = Si.getDevicePixelRatio();
        return (!Si.browser().msie || Si.browser().msie && "11.0" === Si.browser().version) && ("left" === e ? this.oWndCover.left = t : "top" === e ? this.oWndCover.top = t : "right" === e ? this.oWndCover.right = t : "bottom" === e && (this.oWndCover.bottom = t)), t = Math.round(t * n), this.oRequest.setWndCover(e, t)
      }
    }, {
      key: "JS_CuttingPartWindow",
      value: function (e, t, n, o, i) {
        var r = Si.getDevicePixelRatio();
        return e = Math.round(e * r), t = Math.round(t * r), n = Math.round(n * r), o = Math.round(o * r), i = Math.round(i * r), this.oRequest.cuttingPartWindow(e, t, n, o, i)
      }
    }, {
      key: "JS_RepairPartWindow",
      value: function (e, t, n, o, i) {
        var r = Si.getDevicePixelRatio();
        return e = Math.round(e * r), t = Math.round(t * r), n = Math.round(n * r), o = Math.round(o * r), i = Math.round(i * r), this.oRequest.repairPartWindow(e, t, n, o, i)
      }
    }, {
      key: "JS_ChangePlayMode",
      value: function (e) {
        return this.oRequest.changePlayMode(e)
      }
    }, {
      key: "JS_SetLanguageType",
      value: function (e) {
        return this.oRequest.setLanguageType(e)
      }
    }, {
      key: "JS_InitLoginInfo",
      value: function (e) {
        return this.oRequest.initLoginInfo(e)
      }
    }, {
      key: "JS_SetTranslateFile",
      value: function (e) {
        return this.oRequest.setTranslateFile(e)
      }
    }, {
      key: "JS_SwitchToSimple",
      value: function (e) {
        return this.oRequest.switchToSimple(e)
      }
    }, {
      key: "JS_SetVsmToken",
      value: function (e) {
        return this.oRequest.setVsmToken(e)
      }
    }, {
      key: "JS_Play",
      value: function (e, t, n, o, i, r, a, s, u) {
        return this.oRequest.startPlay(e, t, n, o, i, r, a, s, u)
      }
    }, {
      key: "JS_Enable3DZoom",
      value: function (e) {
        return this.oRequest.setPreview3DPosition(e)
      }
    }, {
      key: "JS_StopTotal",
      value: function () {
        return this.oRequest.stopTotal()
      }
    }, {
      key: "JS_SetDragMode",
      value: function (e) {
        return this.oRequest.setDragMode(e)
      }
    }, {
      key: "JS_ShowErrorInfoInFullScreen",
      value: function (e) {
        return this.oRequest.showErrorInfoInFullScreen(e)
      }
    }, {
      key: "JS_SetNumberOfWindows",
      value: function (e) {
        return this.oRequest.setNumberOfWindows(e)
      }
    }, {
      key: "JS_InitCardReader",
      value: function (e) {
        return this.oRequest.initCardReader(e)
      }
    }, {
      key: "JS_UnInitCardReader",
      value: function () {
        return this.oRequest.unInitCardReader()
      }
    }, {
      key: "JS_StartAutoMode",
      value: function () {
        return this.oRequest.startAutoMode()
      }
    }, {
      key: "JS_StopAutoMode",
      value: function () {
        return this.oRequest.stopAutoMode()
      }
    }, {
      key: "JS_InitFingerprint",
      value: function (e) {
        return this.oRequest.initFingerprint(e)
      }
    }, {
      key: "JS_UnInitFingerprint",
      value: function () {
        return this.oRequest.unInitFingerprint()
      }
    }, {
      key: "JS_StartCollectFingerprint",
      value: function () {
        return this.oRequest.startCollectFingerprint()
      }
    }, {
      key: "JS_StopCollectFingerprint",
      value: function () {
        return this.oRequest.stopCollectFingerprint()
      }
    }, {
      key: "JS_IsCollectingFingerprint",
      value: function () {
        return this.oRequest.isCollectingFingerprint()
      }
    }, {
      key: "JS_InitVideocapture",
      value: function (e) {
        return this.oRequest.initVideocapture(e)
      }
    }, {
      key: "JS_UnInitVideocapture",
      value: function () {
        return this.oRequest.unInitVideocapture()
      }
    }, {
      key: "JS_RegisterDeviceType",
      value: function (e) {
        return this.oRequest.registerDeviceType(e)
      }
    }, {
      key: "JS_ActiveOnlineDevice",
      value: function (e, t) {
        return this.oRequest.activeOnlineDevice(e, t)
      }
    }, {
      key: "JS_RefreshDeviceList",
      value: function () {
        return this.oRequest.refreshDeviceList()
      }
    }, {
      key: "JS_ModifyDeviceNetParam",
      value: function (e, t, n, o, i, r, a) {
        return this.oRequest.modifyDeviceNetParam(e, t, n, o, i, r, a)
      }
    }, {
      key: "JS_ExportKeyFile",
      value: function (e) {
        return this.oRequest.exportKeyFile(e)
      }
    }, {
      key: "JS_ImportKeyFile",
      value: function () {
        return this.oRequest.importKeyFile()
      }
    }, {
      key: "JS_ResetPassword",
      value: function (e, t, n, o) {
        return this.oRequest.resetPassword(e, t, n, o)
      }
    }, {
      key: "JS_UploadPicture",
      value: function (e) {
        return this.oRequest.uploadPicture(e)
      }
    }, {
      key: "JS_ShowSelectMenu",
      value: function (e, t, n, o, i) {
        var r = document.getElementById(e);
        if (r) {
          var a = Si.getWndPostion(r, !1, this.oWindowAttr);
          "center" === i ? a.left -= Math.round((t - r.offsetWidth) / 2) : "right" === i && (a.left -= Math.round(t - r.offsetWidth));
          var s = Si.getDevicePixelRatio();
          t = Math.round(t * s), n = Math.round(n * s);
          var u = 1 * window.getComputedStyle(r).height.slice(0, -2),
            c = Math.round(u * s);
          this.oRequest.showSelectMenu(a.left, a.top + c, t, n, o)
        }
      }
    }, {
      key: "JS_HideSelectMenu",
      value: function () {
        this.oRequest.hideSelectMenu()
      }
    }, {
      key: "JS_DestroySelectMenu",
      value: function () {
        return this.oRequest.destroySelectMenu()
      }
    }, {
      key: "JS_DeviceConfig",
      value: function (e) {
        return this.oRequest.deviceConfig(e)
      }
    }, {
      key: "JS_CloudStorageConfig",
      value: function (e) {
        return this.oRequest.cloudStorageConfig(e)
      }
    }, {
      key: "JS_EzvizRemoteConfig",
      value: function (e) {
        return this.oRequest.ezvizRemoteConfig(e)
      }
    }, {
      key: "JS_ShowAlarmInfoInFullScreen",
      value: function (e, t, n) {
        return this.oRequest.showAlarmInfoInFullScreen(e, t, n)
      }
    }, {
      key: "JS_SetImmediatePlaybackTime",
      value: function (e) {
        return this.oRequest.setImmediatePlaybackTime(e)
      }
    }, {
      key: "JS_SetDrawStatus",
      value: function (e) {
        return this.oRequest.setDrawStatus(e)
      }
    }, {
      key: "JS_ClearRegion",
      value: function () {
        return this.oRequest.clearRegion()
      }
    }, {
      key: "JS_SetDrawShapeInfo",
      value: function (e, t) {
        return this.oRequest.setDrawShapeInfo(e, t)
      }
    }, {
      key: "JS_SetGridInfo",
      value: function (e) {
        return this.oRequest.setGridInfo(e)
      }
    }, {
      key: "JS_GetGridInfo",
      value: function () {
        return this.oRequest.getGridInfo()
      }
    }, {
      key: "JS_SetPolygonInfo",
      value: function (e) {
        return this.oRequest.setPolygonInfo(e)
      }
    }, {
      key: "JS_GetPolygonInfo",
      value: function () {
        return this.oRequest.getPolygonInfo()
      }
    }, {
      key: "JS_SetLineInfo",
      value: function (e) {
        return this.oRequest.setLineInfo(e)
      }
    }, {
      key: "JS_GetLineInfo",
      value: function () {
        return this.oRequest.getLineInfo()
      }
    }, {
      key: "JS_SetRectInfo",
      value: function (e) {
        return this.oRequest.setRectInfo(e)
      }
    }, {
      key: "JS_GetRectInfo",
      value: function () {
        return this.oRequest.getRectInfo()
      }
    }, {
      key: "JS_ClearShapeByType",
      value: function (e) {
        return this.oRequest.clearShapeByType(e)
      }
    }, {
      key: "JS_SensitiveEncrypt",
      value: function (e, t, n) {
        return this.oRequest.sensitiveEncrypt(e, t, n)
      }
    }, {
      key: "JS_SendRequest",
      value: function (e) {
        return this.oRequest.sendRequest(e)
      }
    }, {
      key: "JS_RequestInterface",
      value: function (e) {
        return this.oRequest.requestInterface(e)
      }
    }, {
      key: "JS_StopPlay",
      value: function (e) {
        return this.oRequest.stopPlay(e)
      }
    }, {
      key: "JS_ShowRemoteConfig",
      value: function (e) {
        return this.oRequest.showRemoteConfig(e)
      }
    }, {
      key: "JS_Video2Picture",
      value: function () {
        return this.oRequest.video2Picture()
      }
    }, {
      key: "JS_Picture2Video",
      value: function () {
        return this.oRequest.picture2Video()
      }
    }, {
      key: "JS_PtzControl",
      value: function (e) {
        return this.oRequest.ptzControl(e)
      }
    }, {
      key: "JS_SimMouseClickEvent",
      value: function (e, t) {
        return this.oRequest.simMouseClickEvent(e, t)
      }
    }, {
      key: "JS_US_SetMaxJobCount",
      value: function (e) {
        return this.oRequest.us_SetMaxJobCount(e)
      }
    }, {
      key: "JS_US_GetMaxJobCount",
      value: function () {
        return this.oRequest.us_GetMaxJobCount()
      }
    }, {
      key: "JS_US_AddSchedule",
      value: function (e) {
        return this.oRequest.us_AddSchedule(e)
      }
    }, {
      key: "JS_US_DelSchedule",
      value: function (e) {
        return this.oRequest.us_DelSchedule(e)
      }
    }, {
      key: "JS_US_GetScheduleList",
      value: function (e) {
        return this.oRequest.us_GetScheduleList(e)
      }
    }, {
      key: "JS_US_GetSchedule",
      value: function (e, t) {
        return this.oRequest.us_GetSchedule(e, t)
      }
    }, {
      key: "JS_US_UpgradeAction",
      value: function (e, t) {
        return this.oRequest.us_UpgradeAction(e, t)
      }
    }, {
      key: "JS_US_CheckUpgradeableDevice",
      value: function (e) {
        return this.oRequest.us_CheckUpgradeableDevice(e)
      }
    }, {
      key: "JS_US_CheckUpgradeableDeviceList",
      value: function (e) {
        return this.oRequest.us_CheckUpgradeableDeviceList(e)
      }
    }, {
      key: "JS_US_IsRunningAsyCheckUpgradeable",
      value: function () {
        return this.oRequest.us_IsRunningAsyCheckUpgradeable()
      }
    }, {
      key: "JS_US_StopAsyCheckUpgradeable",
      value: function () {
        return this.oRequest.us_StopAsyCheckUpgradeable()
      }
    }, {
      key: "JS_GetFishEyePTZPreset",
      value: function (e) {
        return this.oRequest.getFishEyePTZPreset(e)
      }
    }, {
      key: "JS_SetFishEyePTZPreset",
      value: function (e, t, n) {
        return this.oRequest.setFishEyePTZPreset(e, t, n)
      }
    }, {
      key: "JS_ControlFishEyePTZ",
      value: function (e, t, n, o) {
        return this.oRequest.controlFishEyePTZ(e, t, n, o)
      }
    }, {
      key: "JS_ControlFishEyeParol",
      value: function (e, t, n) {
        return this.oRequest.controlFishEyeParol(e, t, n)
      }
    }, {
      key: "JS_SetFirstDayOfWeek",
      value: function (e) {
        return this.oRequest.setFirstDayOfWeek(e)
      }
    }, {
      key: "JS_SetEhomePlayInfo",
      value: function (e, t, n, o, i, r) {
        return this.oRequest.setEhomePlayInfo(e, t, n, o, i, r)
      }
    }, {
      key: "JS_PlayPatch",
      value: function (e) {
        return this.oRequest.startPlayPatch(e)
      }
    }, {
      key: "JS_SetWndAutoPanState",
      value: function (e, t) {
        return this.oRequest.setWndAutoPanState(e, t)
      }
    }, {
      key: "JS_EnablePrivileges",
      value: function () {
        return this.oRequest.enablePrivileges()
      }
    }], [{
      key: "JS_WakeUp",
      value: function (e) {
        var t = document.createElement("iframe");
        t.style.display = "none", t.src = e, document.body.appendChild(t), setTimeout((function () {
          document.body.removeChild(t)
        }), 3e3)
      }
    }]), e
  }()
}();